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

Автор KOTEHOK, 13 лет назад, По-русски
Лог первого тура:

Окончательная информация: у сборной России 300 баллов у Паши, 269 у Саши, и по 212 у Димы и Егора. Общее количество полных баллов - 17, участников с >=243 баллами - 35, >= 170 баллов имеют 99 участников. >= 138 баллов - 145 участников. Кстати, ребята говорят, что на туре было подозрительно много реджаджей. Также добавлены мелкие багфиксы к решениям по итогам общения с командой.

12:56 - За 15 минут до конца, есть 17 участников с полным баллом, 30 участников с баллом >= 243, 96 набрали >= 170 баллов, 141 участник - >= 138 баллов. У России пока без изменений :( Пойду встречать ребят, может, какие хорошие вести появятся.

12:41 - Полчаса до конца, 14 полных, 43 участника >= 200, 87 участников >= 170, 132 участника >= 138. Россия - 300 (Паша), 237 (Саша), 212 (Дима), 190 (Егор). Эх, ещё бы немножечко!

12:30 - Число полных баллов выросло до 13. Россия - 300, 237, 212, 190. Кстати, организаторы наконец поправили имена в табличке. И Гена, наконец, всё сдал.

12:23 - 11 полных, 39 участников >= 200, 88 участников >= 149, 156 участников >= 100. Ситуация стремительно развивается. Где же наши, почему у троих из них всего одна сотня? Ждём хотя бы вторую.

12:13 - SnarkNews попытался восстановить старую нумерацию участников: http://158.250.33.215/~ejudge/player_d1.html

12:10 - Странно, что нет ни одного участника из Беларуси с полным баллом. Может, со странами тоже что-то не так, или всё-таки нет?

12:06 - Уже 10 полных баллов! Россия - 300, 237, 192, 190.

12:00 - На настоящий момент 6 полных, 34 участника >= 200, 73 участника >= 149, 145 участников >= 100. У России, если верить информации о стране, 300, 237, 190, 170. Неплохо, но хочется лучше!

11:40 - Если верить странной табличке, то сейчас 26 участников имеют >= 200 баллов, 59 - >= 149 баллов, 132 - >= 100 баллов.

11:20 - хотелось бы верить, что хотя бы страны не перепутаны. Если так, то у сборной России было только что 666 баллов в сумме. Надеюсь, это не помешает нам всех порвать ;) Сейчас вроде уже стало чуть больше, минимальный балл, который пишется, 149. Хотя это маловато, примерно 50-е место. Количество полных баллов в таблице - уже 3. Организаторы явно не рассчитали сложность задач...

10:58 - теперь и во всплывающей таблице участники перемешались. Видимо, ей всё-таки верить нельзя. А жаль...

10:56 - с другой стороны, это касается текстовой таблица, а оригинальная таблица с "всплывающими участниками" показывает 300 баллов у Паши Кунявского и 269 баллов у Гены. Но всё-таки непонятно, как 180 превратилось в 269. Видимо, нужно ждать, пока таблицу толком исправят.

10:52 - таблица обновилась, и показывает странные вещи. Похоже, что всех участников кто-то аккуратно перемешал, например, написано, что у Димы Егорова 300 баллов, а у Гены Короткевича внезапно стало всего 70. Я подозреваю, что тот участник, у которого 300, это всё-таки Гена. Ему бы уже пора идти купаться в море ;)

10:44 - таблица чуть-чуть изменилась, в частности, у Паши Кунявского 169 баллов, если верить замечательной системе, этот сабмит сделан ровно полтора часа назад - в 09:14.

10:07 - таблица до сих пор не обновляется. Gassa заметил, что есть один участник из Тайваня, который сдал задачу race. Неужели она решается ещё проще?

В 09:55 таблица результатов начала чуть-чуть обновляться, но медленно. Мы не знаем, насколько это соответствует текущему моменту контеста, вряд ли за час количество участников с >=100 баллами увеличилось всего на 3 (с 30 до 33).

В 09:37 организаторы тоже заметили, что таблица не обновляется, чинят.

В 09:30 - мы предполагаем, что доступная таблица результатов перестала обновляться - маловероятно, что за последние 15 минут не произошло никаких изменений.

В 09:20 на втором месте участник из Таиланда под номером 4 (Sorawit Suriyakarn) со 169 баллами. Третье место уже имеет всего лишь 112 баллов.

В 09:15 у Гены до сих пор 180. Может быть, N * Q взятий по модулю-таки не проходят, и нужно делать, как описано ниже? Вообще сервера очень быстрые, на пробном Флойд на 1000 заходил за секунду.

В 09:05 по виду около 25 участников уже набрали 100 баллов, среди них один из России.

В 08:50 у Гены уже было 180 баллов. У российских участников - 100 у Паши Кунявского, 42 у Егора Суворова.

По информации от организаторов, контест начался в 08:10 и закончится в 13:10 (местное время - +3 часа от московского).

---

Условия задач первого тура: http://acm.math.spbu.ru/ioi-2011-day1/
Текущие результаты: http://www.ioi2011.or.th/results
Результаты в приличном виде (спасибо Снарку :): http://sc2.ioi2011.net:8070/contest/
Результаты от SnarkNews с правильной нумерацией: http://158.250.33.215/~ejudge/player_d1.html

Решения всех задач первого тура.
Ниже приводятся результаты моих размышлений в течение 30 минут. На кодинг всего этого по моим оценкам должно уйти не больше 3-4 часов, так что ожидаются полные баллы.

1) garden
Решение за N * Q (5 секунд должно хватить).
Дополним каждую из N вершин дополнительным флагом: по самому красивому ребру мы в неё пришли или нет. Получится 2N состояний, для каждого из которых однозначно определено следующее. Таким образом, ходя по этим состояниям, мы рано или поздно упрёмся в цикл (получилось что-то типа ро-эвристики). Нас интересуют те циклы, на которых лежат состояния (P, 0) и (P, 1) - это либо один общий, либо два цикла, а также интересны те вершины, из которых эти циклы достижимы. Ясно, что один dfs с запоминанием за O(N) нам поможет для каждого состояния найти величину предпериода до попадания в какую-то из этих вершин, а также размер соответствующего цикла. После этого легко выполнить запрос: для состояния (i, 0) сравним число из запроса с величиной предпериода; и если число из запроса не меньше - то возьмём по модулю длины нужного цикла и сравним остаток (если цикл, содержащий (P, 0) и (P, 1) - общий, то два варианта остатка; иначе выбираем один соответствующий). Заметим, что результаты взятий предпериода по модулю длины цикла мы можем преподсчитать для каждой из вершин заранее, а для каждого запроса нам придётся брать число из него не более чем по двум модулям. Это так, чтобы не было слишком много взятий по модулю, скорее всего, N * Q взятий по модулю тоже пройдёт - но я бы не рисковал.
Upd: после общения с командой выяснилось, что здесь не разобран случай, когда (P, i) лежат на предпериоде - но можно предпериод считать, например, очень большим периодом, или как-нибудь по-другому его разобрать, в общем, это мелкая техническая проблема :)

2) race
Наверно, надо как-то использовать, что длины не больше миллиона, но предлагается забавное решение за N log N с хешами, которое это не использует. А именно, от каждой вершины наверх будем передавать список возможных длин циклов, уходящих от этой вершины вниз. Будем хранить его в хешсете, кроме этого для хешсета будет храниться константа C, которая добавляется к каждому из чисел в хешсете. Подвесим дерево и запустим по нему dfs. Тогда в каждой вершине происходит следующее: возьмём первого потомка, вычислим для него список, добавим к константе C длину соответствующего ребра, дальше возьмём второго потомка, тоже вычислим аналогичный список, а теперь (внимание! ключевой момент) смерджим меньший список с большим (именно в эту сторону!) двумя способами. Первый способ будет искать значения K-C1-C2-A2i в первом хеше, где Cj - константы для списков, таким образом, мы учитываем пути, идущие через текущую вершину от первого потомка ко второму. Второй способ просто добавит значения A2i+C2-C1 к первому списку, после этого он будет содержать пути, уходящие из нашей вершины к первому и второму потомку, и теперь можно аналогично добавить третьего потомка, etc. Да, конечно, с каждым числом мы храним соответствующий ему минимум длины пути, чтобы обновлять глобальный минимум при мердже первым способом. Когда обработаем всех потомков - передадим список наверх, etc. Почему NlogN? Да потому что каждая вершина дерева оказывается в меньшем списке не более logN раз. Да, текущую вершину тоже не стоит забывать добавлять, ведь путь может идти от неё. Это, видимо, делается добавлением самой последней операцией в каждой вершине списка из одного нуля. Кстати, теперь понятно, и как использовать ограничение длины 10^6 - можно вместо хеша всё засунуть просто в массив от -10^6 до 10^6, с дополнительной связью в виде списка, для того, чтобы быстро проходиться по меньшему списку.
Upd: С массивами, видимо, делать нельзя - так как нужно хранить по массиву на каждый уровень. Тем не менее, хешмэп с удвоением, а также декартово дерево (Nlog^2N) и даже map решают - решение проходит по времени.

3) ricehub
Ну тут, казалось бы, метод нескольких указателей. Очевидно, что максимальный ответ за минимальную цену достигается в каком-то из рисовых полей (иначе всегда можно сдвинуться в ту из сторон, где рисовых полей не меньше, чем в другой, и станет не хуже). Кроме того, это отрезок из подряд идущих рисовых полей (иначе передвинем самую внешнюю точку внутрь отрезка в том направлении, где дыра - опять же, станет не хуже). Теперь будем двигать слева направо тройку указателей - начало, конец и середину. Если конец сдвинулся так, что даже в середине бюджета не хватает - двигаем начало. Середина, конечно, посередине отрезка с точки зрения количества полей - но её тоже можно двигать, имхо так будет проще.
Upd: после общения с командой выяснилось, что самый левый указатель иногда приходится двигать налево, и непонятно, какая получается асимптотика, но, во-первых, это проходит, а во-вторых, двоичный поиск по количеству полей при фиксированном центре, с учётом того, что по разные стороны от центра лежит одинаковое количество рисовых полей, решает.

Если вы видите какие-то баги, или у вас есть другие идеи решений - welcome.
  • Проголосовать: нравится
  • +51
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А условия задач где-то видны?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Пытаюсь залить на http://acm.spbgu.ru/ioi-2011-day1/. Получается пока плохо, местный интернет ужасен.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Какая-то еще странность с показом результатов. По задаче GARDEN разбаловка 49+20+31.
У таиландца в детализации показывает 49+20+0 =69, все понятно.
А у Гены - 49+31+0 = 80, чего быть, вроде, не может.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Видимо, он решил первую подзадачу и третью, но почему-то не решил вторую. Может, какой крайний случай не прошёл.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну, так показывали бы 49+0+31...
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Небось, их система показа результатов сортирует баллы по подзадачам в порядке убывания? От неё всего можно ожидать, учитывая, что она уже полтора часа как не работает вообще.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Может быть, в подзадачу 20 включили крайние и специальные случаи, а в подзадачу 31 их же не включили. Но да, странно. Тем более что сейчас у четырёх человек по 49+31 и у одного 49+20.
13 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится
Меня радует одно: что, согласно правилам IOI, сами участники эту замечательную таблицу не видят
13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
Вот вопрос: что делают участники, у которых уже 300 баллов? Они продолжают сидеть на своих местах или могут присоединяться  к тренерам/болельщикам?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    Вообще место проведения контеста находится в другом здании, хоть и не очень далеко, поэтому я банально не знаю. Я бы на их месте пошёл купаться в море, оно тут рядом ;) А к выходу из зала соревнований я пойду всё-таки к концу контеста, встречать ребят.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится
      Просто если они выходят, можно определить, кто они :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        в том месте, где сидят тренера, пока вроде никто не появлялся и не звонил
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Мне кажется, было бы странно, если бы они зашли на конференцию :)
        • 13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          Отправить одного тренера на пляж! Разведчиком будет :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Не всегда выходить с контеста - это правильно. Помню, как-то раз, участвуя на четвертьфинале, мы решили все задачи за полтора часа до конца, и уже думали уходить, как тут пришёл wrong answer по одной из задач. Мы тут же нашли ошибку, исправили, послали - но больше никаких ответов не было. Мы уже и предлагали жюри свои тесты, раз у них хороших тестов нет - ничего не помогало. Пришлось сидеть до конца. Тем более, что мало ли что...
        После этого мы на полуфинале уже даже не пытались уходить в конце контеста :)
        • 13 лет назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          > уже думали уходить, как тут пришёл wrong answer по одной из задач

          Т.е. был rejudge?

          С этой IOI я тоже не рискнула бы уходить, вдруг мне вовсе не мои 300 баллов показывают.
          • 13 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

            насколько я понимаю, школьники не видят этой неправильной таблицы и ничего про неё не знают, нам про это  в частности явно объявили
            • 13 лет назад, # ^ |
                Проголосовать: нравится +13 Проголосовать: не нравится
              Вроде свои собственные баллы они видят. Но раз уж такие проблемы с отображением таблицы результатов, то у меня лично нет уверенности в том, что участники видят достоверную информацию о своих посылках.
              • 13 лет назад, # ^ |
                  Проголосовать: нравится +5 Проголосовать: не нравится
                жюри божилось, что у них всё хорошо, но это было часа два назад
          • 13 лет назад, # ^ |
            Rev. 4   Проголосовать: нравится +13 Проголосовать: не нравится

            >  Т.е. был rejudge?

            Да, внезапно выяснилось, что у жюри была такая бага, как и у нас.

13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Да! RUS2 - это все-таки Паша Кунявский! И у Гены теперь тоже 300.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Жалко, что оставшееся время с первого тура не переносится на второй. Было бы неплохое преимущество, два с половиной часа :)
    Обидно, что у остальных наших участников какие-то проблемы :(
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вы поглядите, что китайцы творят! Боюсь, что нашим в сумме их уже не переплюнуть...
      • 13 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится
        при таком первом туре второй просто обязан быть сложнее
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Хорошо, если он вдруг не окажется проще. Вот тогда будет вообще жесть. Но я надеюсь, что организаторы всё-таки не хотят 20 абсолютных победителей получить в итоге.
          • 13 лет назад, # ^ |
              Проголосовать: нравится +10 Проголосовать: не нравится
            Удивило, что не было ни одной "марафонской" задачи. Хотя бы, что бы участников разделить.
            Может во втором туре сразу 3 таких будет =)
        • 13 лет назад, # ^ |
            Проголосовать: нравится +6 Проголосовать: не нравится
          Мне эта система оценки задач кажется не  очень хорошей.
          1 -При непрохождении одного теста из группы можно недосчитаться кучи баллов со всеми вытекающими последствиями...
          2 - можно в итоге получить 20-30 абсолютных чемпионов
          ... старая система оценки (без группирования) кажется более разумной
          ... наличие задач типа марафона (как в прошлом сезоне) также лучше распределяет участников по местам
              Пока получается что-то неразумное
          • 13 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

            Мне тоже не нравится. Я об этом писал еще применительно к Московской заочной.
            Основной довод "за" - стремление отделить тех, кто умеет писать N logN от тех, кто пишет хорошо оптимизированный квадрат.
            Но недостатков, по-моему, больше. Сейчас мы имеем большие дележи и очень высокую стоимость возможно мелкой ошибки. На что сейчас могут расчитывать участники, не набравшие 300? Может только в десятку войти...
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
У Хорватии, как у Китая, 3 по 300
  • 13 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится
    Надо чаще участвовать в Хорватских олимпиадах, видимо.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится
      Участвуем ;) И еще в контестах, составленных из их задач (это я про студентов).
13 лет назад, # |
  Проголосовать: нравится +27 Проголосовать: не нравится
сразу после первого тура надо подкрепиться:



13 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится
Паша вперед!!! ))) мы за тебя болеем!!!)
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Завтра(26.07.2011) будет продолжение заметок???