Задача А. STL + немного мозгов.
- map<string,int> M_pair; // считал входные данные в M_pair;
- map<string,vector<pair<int,int> > > M_step; // сюда записывал ходы, игрока;
- vector<pair<int,string> > Res; // а сюда скинул, ключ - выигрыш игрока, и имя игрока ;
- sort(Res.being(),Res.end(),predicat); // создал предикат по которому происходила сортировка Res, игроков;
- predicat //если выигрыш одинаковый, тогда смотрим в M_step хронологию событий когда игрок впервые заработал, сумму m;
решение: http://ideone.com/xLNBhopu accepted.
Задача В. Почти ни каких соображений нету((
сначала предположил избегать чисел 2,5,10 то есть тех которые создают нули, но увидев тест понял что это не правильно.
решение: http://ideone.com/o5wvzGpT wrons answer on test 13, спасибо тем кто помог.
Задача С. Вообще я ее правильно понял???
Три круга на поле и нужно, найти точку равноудаленную от трех окружностей?
Мнение:
Хоть я и решал задачу А два часа, мне понравился этот процесс=)
По задаче B. Для каждого числа в таблице посчитал кол-во двоек и пятерок. Именно числа 2 и 5 создают нули. Кол-во нулей будет min(двойки, пятерки).
Далее идет простая динамика, как если бы мы искали минимальный путь в таблице. Формула:
a[i][j]=a[i][j]+min(a[i-1][j],[i][j-1]).
Пытаемся найти один путь с мин. кол-вом двоек и второй путь с мин. кол-вом пятерок. Далее сравниваем, в каком из двух случаев получилось меньше нулей.
Отдельно нужно рассмотреть случай, когда в таблице есть просто 0. Тогда у нас уже есть ответ - 1. Плюс строим по нему любой путь, который включает в себя клетку с нулем.
Но вот мои мысли по ее поводу (возможно они вообще мимо кассы):
В задаче надо найти точку в которой отношение расстояний до центра окружности к радиусу будет одинаковым. Там надо написать два уравнения, из них можно сделать одно без квадратов. Выразить x через y (или наоборот), подставить в одно из первых уравнений и решать его (может быть два ответа из них выбрать ближний).
берем множество точек для первого-второго стадионов и для второго-третьего, пересекая их получаем точки-кандидаты.
среди таких точек берём наиболее близкую к любому из стадионов.
Множество точек C таких что AC/BC = const>1 это окружность с центром в B.
Пусть R - расстояние от точки до какого-либо стадиона радиуса r. тогда r/R это косинус половины угла под которым виден стадион.
Так что нам нужно именно отношение.
сейчас посчитал, вроде у тебя константы 0.5 не хватает, может ошибаюсь
эллипс с фокусами в A, B это AC+BC=const.
Поэтому 2 динамики надо пробежать, потом взглянуть на ответ, если меньше 1, то ответ из динамики берем, если больше, то просто путь делаем, чтобы 0 содержал. Ну и конечно когда таблицу составляем для динамик надо не забыть в клетке где ноль сделать очень много двоек и пятерок ;)
3 задача - бинпоиск по углу. Можно попытаться системку сделать, но руки пока не дошли.
Вот тест, все поймете:
5
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
Поясню:
если идти через ноль, то в итоге произведение = 0 и круглость 1, если же идти по единицам только, то произведение = 1 и круглость 0.
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
мне кажется косяк тут
78: a[i][j] = 2000000000;
нужно условие
if(a[i][j] == 0)
{
label_null = true;
a[i][j] = 2000000000;
ans_if_null = get_ans(i,j,n);
}
поставить после
dinam_two[i][j] = get_count_of_div(a[i][j],2);
dinam_five[i][j] = get_count_of_div(a[i][j],5);
поправив в условии то, что нужно менять значения dinam_two[i][j] и dinam_five[i][j] на очень много
соответственно адаптировать get_count_of_div под 0.
1 625 1 1
1000 1 8 8
1000 1 8 2
1000 1 8 1
Там путь генерируется неправильно. Ошибка в push_back. Вообще там много использования STL не к месту.
dinamic(vector<vector<int> > a -- передача вектора по значению (надо по константой ссылке).
dynamic(const vector<vector<int> > &a
100 100 0 100
100 100 100 100
100 100 100 100
100 100 100 100
поменять местами две верхние с двумя нижними
for(int i = 0; i < x; i++) res.push_back('D');
for(int i = 0; i < y; i++) res.push_back('R');for(int i = x + 1; i < n; i++) res.push_back('D');
for(int i = y + 1; i < n; i++) res.push_back('R');
Wondering a lot why such posts appear in my "Recent actions"...