2 января 2018 в 18:00 (время московское) открылся второй этап SnarkNews Winter Series 2018. Как и несколько предыдущих серий, SNWS-2018 пройдёт на системе Яндекс.Контест. Опубликовано расписание серии.
По просьбам участников отдельно публикую ссылку на вход в первый раунд. Здесь же по окончании раунда в соответствии с расписанием можно будет обсудить задачи первого раунда.
Как делать C?(3-й запрос)
Отсортируем зараженные города по времени входа, удалим те, которые лежат в поддереве другого зараженного. Теперь нужно взять максимум расстояний от нашей вершины до всех хороших. Сгруппируем вершины по LCA с нашей. Такими LCA могут быть только предки нашей вершины.
Рассмотрим некоторого предка w нашей вершины v, не совпадающего с v. Если w плохая, то все её потомки тоже плохие, а значит в группе w нет хороших вершин. Теперь w хорошая. Пусть среди вершин, входящих в группу w вообще все вершины хорошие. Тогда нам нужно просто взять среди них вершину с максимальной глубиной. Для этого сделаем следующий прекальк. Для каждой вершины найдем две наиболее глубокие вершины в поддеревьях разных сыновей. Теперь для ребра (vu), идущего вверх, запомним самую глубокую вершину такую, что она потомок u, но не потомок v.
Теперь заметим, что среди предков v будет не более k+1 вершин не таких, как я описал в предыдущем абзаце. Каждую из этих k+1 вершин мы можем обработать отдельно, взяв максимум глубин по хорошим вершинам (хорошие вершины суммарно будут образовывать O(k) отрезков в эйлеровом обходе, поэтому достаточно завести ДО или sparse table на максимум глубины над эйлеровым обходом). Остальные вершины разобьются на O(k) вертикальных путей. Чтобы брать максимум на пути, построим двоичные подъемы на максимум функции deepest(v) - 2·h(v).
Получилось очень сумбурно, без бумажки сложно. Я надеюсь, разобраться можно. Более простая версия (с k=1) использовалась как подзадача в задаче I с Tsinghua U Deep Dark Fantasy Contest, Ptz Winter 17, Day 5.
А кто-нибудь сдал? У меня не стрессится :(
upd: Все норм, просто K ≥ 0 на самом деле.
Как решать A, D, F?
A — динамика по подмаскам. Зависимости между гипотезами тоже лучше хранить в сжатом виде побитово
D — всегда нужно пытаться идти к дальней катапульте. Разные варианты будут только на первом шаге, это перебирается.
Спасибо!
A — состояние (гипотеза, полученные гипотезы)? D — перебираем стартовую и потом прыгаем к дальней возможной?
Я думал про F — жадного поиск самого правого измененного кандидата, но застрял.
Я F не сдал, но вроде там можно написать динамику, идём от z к a и храним количество способов получить данное множество равных букв (и 5 лексминов и лексмаксов для них). Этих множеств всегда мало, потому что мы можем поднять не больше одной буквы x в x+1. При этом когда мы думаем о том, как поднять x-1 в x, то нам пофиг на все буквы больше x, поэтому это состояние динамики.
У меня в F зашло такое: для каждого слова переберем 2|S| вариантов оригинала и попробуем зашифровать как описано в условии. Главное — отсекать проверку как можно раньше и не проходиться для каждой маски по всему слову.
Перебор можно делать одновременно с проверкой, все суммарно будет за O(2|S|).
Разборы где-то будут публиковаться?
Можно ли посмотреть тест, на кот-м падает мое решение, мой ответ и прав-й (как на некот-ых других платформах) ?
Как участвовать в соревновании?
Пишет "У вас нет прав просматривать это соревнование"...
Почему никто не отвечает?
Уже пофиксилось
F второго раунда?
Пусть хотим узнать, достижима ли какая-то маска. Это можно сделать следующей динамикой:
dp[i][mask]
— минимальное количество операций, за которое можно правильно построить первые i столбцов, чтобы в маске строкmask
в i-ом столбце заканчивались горизонтальные операции (и возможно в каких-то еще строках).При фиксированном i динамика представляет из себя функцию {0, ..., 2n - 1} → {0, ..., maxk + 1} и переходы зависят только от нее. Тогда можно посчитать динамику
ans[i][func]
-- количество масок, у которыхdp[i] = func
.Всего функций не очень много, решение считает все ответы за ~ 0.3 секунды.
У вас нет прав просматривать это соревнование
при попытке зайти в 3 раунд.4 раунд "У вас нет прав просматривать это соревнование"
4 тур идет с 22 января по 1 февраля, уже прошло 3 дня со старта, а зайти возможности так и не появилось, как и хоть какой-нибудь реакции от организаторов.
Раунд заработает в ближайшее время, расписание будет актуализировано с учётом всех проблем со стартом.
Если кому интересно, то 4-ый раунд стартовал. На сайте никаких обновленных дат или объявлений о переносе старта нет, но в Я.Контесте время старта 27 янв 2018, 22:00:00.
E 3-го раунда?
upd: если кому-то интересно, то решается минразрезом, наподобие hard life
Что за hard life?
NEERC 2006. Problem H. Hard Life.
И ссылку на решение дам
чтоб мне плюсиков поставили
В задаче А 1-го раунда ошибка в неравенстве 0 ≤ gi ≤ n, корректно < n.
В задаче С 1-го раунда ошибка в неравенстве 1 ≤ k, корректно 0 ≤ k.
ну ок
Оказывается надо переключить интерфейс на русский язык, чтоб появилось...