Предлагаю обсуждать здесь задачи; контест был очень интересным, думаю, у многих есть вопросы.
У кого-нибудь были проблемы с 8ым тестом в H? У нас какая-то мистика — WA8, но если мы добавляем чекер в наше решение, он падает на 4ом тесте. Неужели у жюри слабый чекер? ну или у нас руки совсем кривые
Прошлый раунд Снарк просил пока не обсуждать. Может быть, с этим так же?
Ну тогда про это стоило написать. Давайте тогда не писать здесь ничего по задачи, пока не будет комментариев snarknews.
Upd.
Снарк говорит, что можно обсуждать.
Как решать E?
Пусть есть матрица с единицами. Возьмём главую диагональ, и умножим все её клетки на какое-то простое число. Сдвинем по циклу, умножим ещё раз, и так N раз.
Если N нечетное то можно сделать такой же квадрат для побочной диагонали но с другими простыми числами.
Если перемножить квадраты то все числа будут разные, т.к. каждое число однозначно определяется двумя диагоналями на которых оно лежит.
Для чётных N так не выйдет, поэтому в первом квадрате я сдвигал нижнюю половину матрицы:
После этого клетка опять однозначно определялась по двум диагоналям, а значит все числа были разные.
Ясно, спасибо.
Как решать L and N див2. Не обессудьте)
L:
Положим в мапу все цифры со значением 1. Потом (n - 1) раз сделаем следующее: вынем каждое число из мапы, умножим на каждую цифру и положим обратно. Потом пройдёмся по всем значениям в мапе, возведём в квадрат и прибавим к ответу.
Код
А как пояснить что число различных произведений растет медленно или может это число можно формулой выразить?
Всего у нас миллиард различных чисел. Причём, перестановка цифр в числе не даёт нового произведения.
Очень-очень грубо получается что-то вроде: .
Но пока я не написал код, для меня это было неочевидно. Даже когда Lo_R_D предложил написать это в начале раунда, я убедил его что это порядка 109 операций.
N:
Вроде такое должно работать:
Пройдёмся массиву от B влево и будем поддерживать разность (количество чисел меньше B — количество чисел больше B). Затем пройдёмся от B вправо поддерживая ту же разность. На каждом элементе прибавим к ответу количество раз, которое текущая разность с противоположным знаком встретилась пока проходились влево.
UPDATE: Наконец таки появилась дорешка. Это решение зашло. Код.
В задаче D нет решения только когда все буквы одинаковые, или когда все разные, верно ли это?
Решения нет только в случае всех одинаковых букв.
UPD. Иначе возьмём обычную цепочку и двумя разными способами заменим одно ребро на цикл (например, для cтроки
aabb
автоматы будутaa*bb
иaabb*
).А можно тогда пример для abcd, если не трудно?
Upd: ясно, спасибо.
Очевидно, автоматы
ab*cd
иabc*d
.У нас тоже что-то неясное в H, но мы по ходу переполняем long long. Может вы тоже?
У нас biginteger, так что вряд ли.
Ну мы в общем застряли на 19м тесте еще на контесте, видимо дальше без длинки пролезть нельзя. А что там может быть помимо длинки не знаю.
UPD. Написал внутри решения жадность по выбору строки и столбца и зашло
Ну меня сильно смущает, что наш чекер не согласен с чекером жюри. А можешь выложить ваш код — может стресстест найдёт, в чём проблема?
https://ideone.com/mXgJCV
А как решать А и J? Мы без монитора решали и почему-то по этим двум не было разумных идей. Сейчас смотрю на standings и кажется, что мы что-то упустили.
В задаче А весьма приятная геометрия — благодаря ограничению "никакие 3 точки не лежат на одной прямой" не вылазит никаких корнеркейсов. Фиксируем форт, для него сортируем все башни и дроны по углу, дальше два указателя. При фиксированном форте и фиксированной левой башне второй указатель говорит нам о том, где оканчивается валидный отрезок башен (т.е. какая последняя башня такая, что стена между этой башней и левой башней будет перед фортом, а не позади него), а количество подходящих пар "дрон-башня" на этом отрезке можно вычислять за О(1), если предварительно посчитать различные частичные суммы вроде числа башен на префиксе, числа дронов на префиксе, числа дронов перед башнями и т.д.
Да, вроде понятно. Спасибо! Вопрос по J еще открыт :)
Мы J не сдали, но есть следующая идея — не знаю верная или нет:
Что такое ответ для точки (x, y)? Это минимум из максимальных расстояний(под расстоянием понимается количество поворотов) для следующих случаев:
Как найти необходимое количество поворотов, чтобы посетить все точки, если вначале двигаемся по строке x? Заметим, что за один ход мы можем дойти до любой точки, принадлежащей столбцам на отрезке [left[x], right[x]]. На следующем ходу можно дойти до любых точек строк из отрезка [up, down], где up и down — минимальный и максимальный номера среди строк, инцидентных текущим столбцам. Повторяем, чередуя строки и столбцы, до тех пор пока не окажется, что мы не посетили все столбцы или все строки. Количество итераций и будет ответом для строки x. Осталось обновить ответ для всех ячеек, принадлежащих строке x. Для поиска минимальной и максимальной инцидентной строки/столбца на отрезке можно выполнить предподсчёт.
Да похоже на правду.. Спасибо! Только там вроде максимум из минимальных расстояний.
У нас в дорешивании зашел код с чекером. Можешь показать ваш код?
Ну, если в нашем коде чекер срабатывает, а у жюри нет, это не значит, что правильное решение не зайдёт. Это скорее значит, что мы иногда выводим неправильный ответ, который принимается чекером жюри :)
Наш код: http://ideone.com/KzB2UD
How about the rest of the set? B/C/H/I? Also I was wondering if different teams have different solution to F?
B:
The task is obviously redused to the following: we have some string
S
, how many ways to addx
characters to it and get borderless word?Let's calculate the same thing for not borderless words and then subtract it from 2x.
To do it one can iterate over
L
— the minimal length of such suffix that corresponds prefix. Now we need to know that there will be no such suffix with less length -- it's exactly our initial task with lessx
.Can't find problems of Northern GP in Upsolving (div.2).
They are there now.
http://opentrains.snarknews.info/~ejudge/team.cgi?contest_id=9915
задача G, ясно что можно сделать перебор. А какую нужно выбрать стратегию, которая еще и должна меняться зависимо от исхода костей другого игрока.