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

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

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

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

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

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

А почему контест 80 минут, а не 100?

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

    На SnarkNews Series контест всегда идёт 1:20. Это на Яндекс.Алгоритме время было увеличено до 1:40.

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

      Странно... не помню, чтобы раньше было 80 минут.

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

Как решать B and E?

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

    E: зафиксируем клетку, в которой мы окажемся после одного повторения маршрута. Эта клетка дает нам (dx,dy), на которые мы смещаемся за одно повторение программы. Отсюда мы можем сказать, что какая-то клетка (a,b) хорошая тогда и только тогда, когда клетки (a+k*dx,b+k*dy) тоже хорошие. Отметим все хорошие клетки, которые слева-сверху от (dx,dy), найдем по ним лексмин валидный маршрут из (0,0) в (dx,dy). Выберем лучший ответ по всем (dx,dy).

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

    E. Зафиксируем, сколько ходов влево (p) и сколько ходов вниз (q) в оптимальном ответе. Теперь заведём табличку p + 1 на q + 1, в которой мы хотим получить картинку периода. В этой табличке клетка (row, col) свободна, если на настоящей доске свободны все клетки (row, col), (row + p, col + q), (row + 2 p, col + 2 q) и так далее до самого края доски.

    Осталось в такой табличке найти лексикографически минимальный путь из (0, 0) в (p, q). Это делается динамикой или жадностью.

    Edit: beaten by 1 minute :)

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

    B не сдавал, но вроде должна решаться примерно так:

    Построим суфавтомат по строке a1#a2#...#an. Дальше будем бинпоиском за O(|bilog(n)) искать места в суффмассиве, куда можно вставить строки bi и bi{ ('{'  –  символ идущий сразу за z). Будем считать, что мы сделали прибавление единицы на этом отрезке, потом все эти обновления можно обработать за один проход по массиву. Для каждого суффикса мы можем узнать к какой именно строке из исследуемого языка он относится.

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

    Ну в B же в условии написано "Напишите Ахо-Корасик и посчитайте дп по нему."

    • »
      »
      »
      8 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится -20 Проголосовать: не нравится

      Дело в том, что раньше я никогда не слышал про Ахо-Корасика и довольно часто слышал про существование структуры бор, но понятия не имел как она пишется (да-да, подготовка к АСМ на высшем уровне). На последнем раунде (внимание: спойлер!) в разборе одной из задач упоминается бор. Я пошел почитать про эту структуру данных на emaxx, чтобы решить эту задачу так (на самом раунде я написал нечто похожее на бор с использованием структуры map). Прочитав, я сразу понял, что бор + Ахо-Корасик (далее просто бор) могут решить задачу Б (к этому моменту я специально не стал читать решения Б и Е описанные здесь). Поняв это, сегодня, я решил задачу из последнего раунда бором, а после пошел писать Б, но меня терзали смутные сомнения. Краем глаза листая эту страницу я увидел упоминание суффиксного автомата (правда не известно к какой из задач: Б или Е), и подумал что бором не получится решить по какой-нибудь причине (сначала я думал на ТЛ). Когда написал, понял что для одной вершины я храню 57 интов, а так как вершин должно быть 26*len = 2.6кк = 600 МБ, я стал подозревать, почему бор — плохая идея. Но, на моё удивление, всё заработало затратив лишь 18 МБ (10 МБ после объединения массивов go и next).

      P.S. Сейчас пойду читать условие Е (да-да, я заранее спросил как решается задача, условие которой даже не прочитал).

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

    B: Построим Ахо-Корасик. В каждом состоянии посчитаем, сколько терминальных встречается на пути из него до корня по суффиксным ссылкам. Прогоним каждое из слов-запросов через него, на каждом шаге прибавляя значение из текущего состояния. Всё. Не понимаю, почему я здесь вижу уже третьего человека, которому здесь мерещатся суфф. структуры (ещё и две сразу, lol).

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

Спасибо за красивую задачу E!

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

(ну и стандартый whine про Xmx в Java, отличающийся от Memory Limit'а)

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

Почему точности вывода 8 знаков после запятой не хватало в A? Поменял на 15 и зашло. Решение с правильным n-угольником, вершины в точках r*cos(2*pi*k/n), r*sin(2*pi*k/n)

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

Кажется, сайт немного не обновлен. В разделе история последнее соревнование SNSS-2015 (SNWS-2016 пропущено). В разделе Tournaments — SNSS-2014 (три соревнования пропущено). Просто я в первый раз пишу SnarkNews Series, и иногда мне хочется посмотреть, как же кто выступал в прошлых годах. Из-за того, что это не очень удобно, становится немного грустно.

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

    Тут надо обладать чувством прекрасного. В адресе сайта можно во всех местах поменять год и/или snss на snws. При этом при использовании интерфейса все может поехать.

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

      Мм... Ну да, это выход из ситуации. Но куда что может поехать? Это ведь пара кнопочек. В чем может быть проблема? Кстати, только что заметил, что на птз тоже последняя пара сборов в интерфейс не вставлена.

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

        Fixed (и на сайте SNSS, и на сайте karelia.snarknews.info).

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

        В смысле можно открыть 2014 год, а кнопки (причем не все) все равно будут вести в 2016. Где-то такое было, сейчас не вспомню уже.

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

    Кажется сайт немного поломан. Нельзя отправлять решения по задачам, которые сдал вслепую. В смысле, не только во время контеста нельзя, а вообще нельзя, прямо сейчас, например, я не могу отправить решение — поле для отправки заблокировано так же, как во время контеста блокируется после отправки решения вслепую.

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

Как решать D, E, F во втором раунде? (Хотя по D я кажется почти придумал решение).

P.S. Да-да, я опять не читал условий и спрашиваю... Но поверьте, ваш ответ, во-первых, может пригодиться кому-нибудь другому, а, во-вторых, когда я пойду дорешивать задачи и даже если решу сам — ознакомлюсь с вашим решением (хотя скорее всего совсем что-нибудь сложное только с вашей помощью получится решить).

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

Статистика:

В топ30 SNSS1 — 2 человека с 4-я задачами, 9 человек решили всё.

В топ30 SNSS2 — 23 человека с 3-я задачами, 1 человек решил всё, 1 человек решил 5 задач.

В топ30 SNSS3 — 7 человек с 2-я задачами, 0 человек решили всё, 3 человека решили 5 задач.

А неадекватное повышение сложности — это тоже фишка SNS? Неадекватное, потому что и без того физически тяжело решить 6 задач за 80 минут, так еще каждый раз задачи сложнее становятся. Или главная цель — предоставить выбор что решать, а то что решить всё — невозможно, это уже второстепенное.

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

    Ну вот требование "чтобы победитель сумел решить всё" действительно не обязательно.

    В целом обычно первый раунд подбирается проще остальных (и тоталов там бывает изрядно), далее уже более-менее равномерно. Хотя иногда (скорее даже "довольно часто") получается, что фактически решают несколько не так, как предполагалось при составлении раунда.

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

    В Петрозаводске нормальная ситуация, если победитель сдал половину. В чём проблема вообще?

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

      Почему все обратили внимание именно на кол-во тоталов. Первоначальной претензией было количество участников в топ30 с наименьшим количеством задач и то что это наименьшее количество задач уменьшается. А количество тоталов я решил включить в статистику дополнительно.

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

      А два раза давать самой простой задачей — геометрию, тоже нормальная ситуация?

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

Про пятый раунд треда нет, поэтому спрошу тут. Как решать A с пятого раунда?

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

    Сделаем топологическую сортировку лампочек, дальше идем с первой до последней и честно переключаем если не включена (таким образом включить можно все лампочки и понятно, что это будет единственный способ). Это будет решение за квадрат, чтобы влезло нужно заменить переключения на битсеты.