Блог пользователя snarknews

Автор snarknews, история, 6 лет назад, По-русски

2 января 2018 в 18:00 (время московское) открылся второй этап SnarkNews Winter Series 2018. Как и несколько предыдущих серий, SNWS-2018 пройдёт на системе Яндекс.Контест. Опубликовано расписание серии.

По просьбам участников отдельно публикую ссылку на вход в первый раунд. Здесь же по окончании раунда в соответствии с расписанием можно будет обсудить задачи первого раунда.

  • Проголосовать: нравится
  • +45
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Как делать C?(3-й запрос)

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится

    Отсортируем зараженные города по времени входа, удалим те, которые лежат в поддереве другого зараженного. Теперь нужно взять максимум расстояний от нашей вершины до всех хороших. Сгруппируем вершины по 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.

  • »
    »
    6 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    А кто-нибудь сдал? У меня не стрессится :(

    upd: Все норм, просто K ≥ 0 на самом деле.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Как решать A, D, F?

  • »
    »
    6 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

    A — динамика по подмаскам. Зависимости между гипотезами тоже лучше хранить в сжатом виде побитово

    D — всегда нужно пытаться идти к дальней катапульте. Разные варианты будут только на первом шаге, это перебирается.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Спасибо!

      A — состояние (гипотеза, полученные гипотезы)? D — перебираем стартовую и потом прыгаем к дальней возможной?

      Я думал про F — жадного поиск самого правого измененного кандидата, но застрял.

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        Я F не сдал, но вроде там можно написать динамику, идём от z к a и храним количество способов получить данное множество равных букв (и 5 лексминов и лексмаксов для них). Этих множеств всегда мало, потому что мы можем поднять не больше одной буквы x в x+1. При этом когда мы думаем о том, как поднять x-1 в x, то нам пофиг на все буквы больше x, поэтому это состояние динамики.

      • »
        »
        »
        »
        6 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится +5 Проголосовать: не нравится

        У меня в F зашло такое: для каждого слова переберем 2|S| вариантов оригинала и попробуем зашифровать как описано в условии. Главное — отсекать проверку как можно раньше и не проходиться для каждой маски по всему слову.

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится +8 Проголосовать: не нравится

          Перебор можно делать одновременно с проверкой, все суммарно будет за O(2|S|).

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Разборы где-то будут публиковаться?

Можно ли посмотреть тест, на кот-м падает мое решение, мой ответ и прав-й (как на некот-ых других платформах) ?

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Как участвовать в соревновании?

Пишет "У вас нет прав просматривать это соревнование"...

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

F второго раунда?

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    Пусть хотим узнать, достижима ли какая-то маска. Это можно сделать следующей динамикой:
    dp[i][mask] — минимальное количество операций, за которое можно правильно построить первые i столбцов, чтобы в маске строк mask в i-ом столбце заканчивались горизонтальные операции (и возможно в каких-то еще строках).

    При фиксированном i динамика представляет из себя функцию {0, ..., 2n - 1} → {0, ..., maxk + 1} и переходы зависят только от нее. Тогда можно посчитать динамику ans[i][func] -- количество масок, у которых dp[i] = func.

    Всего функций не очень много, решение считает все ответы за ~ 0.3 секунды.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

У вас нет прав просматривать это соревнование при попытке зайти в 3 раунд.

»
6 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится

4 раунд "У вас нет прав просматривать это соревнование"

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится

    4 тур идет с 22 января по 1 февраля, уже прошло 3 дня со старта, а зайти возможности так и не появилось, как и хоть какой-нибудь реакции от организаторов.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Раунд заработает в ближайшее время, расписание будет актуализировано с учётом всех проблем со стартом.

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Если кому интересно, то 4-ый раунд стартовал. На сайте никаких обновленных дат или объявлений о переносе старта нет, но в Я.Контесте время старта 27 янв 2018, 22:00:00.

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

E 3-го раунда?

upd: если кому-то интересно, то решается минразрезом, наподобие hard life

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

В задаче А 1-го раунда ошибка в неравенстве 0 ≤ gi ≤ n, корректно  < n.

В задаче С 1-го раунда ошибка в неравенстве 1 ≤ k, корректно 0 ≤ k.

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

ну ок

Оказывается надо переключить интерфейс на русский язык, чтоб появилось...