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

Автор agul, 13 лет назад, По-русски
Сегодня прошел очный тур ИОИП. 

После 18:00 (МСК), когда закончится 8 индивидуальная интернет-олимпиада на neerc.ifmo.ru/school/, проводимая по задачам ИОИП, предлагаю обсудить здесь решения и ожидаемые результаты (по правилам ИОИП за первые 5 попыток по задаче выдается количество баллов).
  • Проголосовать: нравится
  • +22
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Хотел бы услышать нормальное решение задачи В, т.к. было жутко лень что-то нормально решать, и я в итоге сдал ее на 16 баллов.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

     Предподсчитаем суммы на всех отрезках за О (n). Затем переберем число а и для каждого а бинарным поиском по ответу найдем лучшее решение. Сложность - О (n logn). Есть еще решение за линию, но я его не шибко понял.


  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я решил на 100 так: переберем первую "перегородку"(first), затем бинпоиском найдем такую вторую "перегородку"(poz), что сумма на отрезке с первой по вторую(от first+1 до poz) <= сумме на отрезке со второй и до конца(от poz+1 до n). Теперь получим ответ для пар перегородок (first;poz) , (first;poz-1) , (first;poz+1) и выберем получше. Итого асимптотика O(NlogN)
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      я также писал, только получил 94 почему-то
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        у меня тож сначала было 94. Добавил проверку на то, что в каждой из трех частей, на которые разбили, >=1 элемент и получил 100
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          понятно, значит я все-таки умудрился упустить какой-то маленький случай когда получается пустая часть
          хотя вроде проверял
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    жутко лень было на основном туре ИОИП ? О_о
    или просто на интернет-олимпиаде?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      На интернет-олимпиаде. Я вообще сначала забыл про нее, вспомнил через 2 часа после начала. Ну и вот)
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
кто-нибудь знает, как делать D на 100?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Решение D на 100 баллов

Понятно, что любая тоговая конфигурация - группы подряд идущих единичек, разделенные одним нулем. Заметим, что при такой конфигурации мы приходим в группу, наступая обязательно на первый ее элемент, а уходим, наступая на последний. Кроме этого, переход между группами осуществляется ровно одним способом (перепрыгиванием через ноль). Пусть у нас есть P групп, длина i-й группы Li, количество способов ее пройти Bi. Тогда произведение всех Bi есть количество способов пройти через все группы от начала к концу, а сумма всех Li + P - 1 - суммарная длина всех групп (+P-1 берется потому, что в конце всех групп, кроме последней, стоит замыкающий ноль).

Получаем, что произведение всех Bi = k, а сумма всех Li + P = n + 1. Теперь надо найти любой такой набор групп.

Заметим, что Bi - это числа Фибоначчи. Преподсчитаем всевозможные Bi до 10^18 (их всего 87). После этого искомое разбиение на группы можно найти рекурсивным перебором.

13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Только мне показалось, что С сложнее,чем D? Или это так и задумывалось?
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Не тебе одному. В Москве сотен по С нет. Хотя трудно сказать, какая задача сложнее в плане решения. В С оно почти на поверхности, зато фиг напишешь потом. В D же перебор пишется за несколько минут.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      У меня тоже не честное решение. Но я верю что оно даже может работать всегда.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        Ты думаешь, что в D перебор, который я описал, не всегда будет работать на данных ограничениях? Или ты про С говоришь?
        • 13 лет назад, # ^ |
            Проголосовать: нравится +1 Проголосовать: не нравится
          Про С. У меня разбор случеев + бфс + всякое шаманство.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Павел, а можно подробнее как решать С?
            По соревнованию: я его дико слил, не набрав даже 200 баллов, всё из-за того, что по тупости не мог решить В, вроде алгоритм верный, но набирает только 56 баллов. После этого опустил руки, ибо шансы даже на 3й диплом исчезли. В конце понял, как решать D, но похоже понял не до конца (успел набрать только 24 балла) или скорее времени не хватило. 
            Да, и что за случай такой в А из-за которого у многих (в том числе и у меня) задача набирает 90 баллов? Решал проверкой на 2 предела: первый момент, когда джедай лидирует и первый момент когда ситх лидирует.
            • 13 лет назад, # ^ |
                Проголосовать: нравится +1 Проголосовать: не нравится
              По поводу А: не знаю. Сам решал методом промоделировали первую 1100 дней, если ничего хорошего не вышло, то говорим что ситх всегда круче.
              По поводу B: Знаю только из-за чего бывает 94, что писал выше. Правильных решения 2 - бинпоиск и два указателя. На самом деле это одно и тоже. 56 могу предположить что потеряли long long или что-то еще такое.
              C: Нормальное решение такое. Посчитали расстояние от всего до конца (бфсом из конца по обратным ребрам). Нашли кратчайший путь по числу поворотов. и Бинпоиском ищем оптимальную по минимальной длине. по поводу как проверять. Хороший вариант от Саши Тимина. Будем считать динамику d[x][y][i][j] x,y - позиция. i - по чему мы в нее пришли (по аллее или по улице) j - сделали ли мы уже шаг. Тогда если шага не делали то будем ходить на С, иначе на 1. Вроде авторское решение - что-то похожее. 
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Если решение действительно такое сложное, то странно, что мой просто bfs+восстановление пути набирает аж 84
                • 13 лет назад, # ^ |
                  Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
                  А бфс+востанавление пути + перебор путей из трех отрезков набирает от 92 до 100, в зависимости от реализации.
                  UPD: А просто перебор путей длины три набирает 76. Что не плохо против 80-90 которые получало правильное решение с багами.
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Спасибо. Вроде В так и решал, лонг лонг в последней попытке засунул уже везде, но это ничего не изменило. Наверно, где-то просто закралась злобная реализационная багина)
                По поводу А. Ваше решение действительно проще моего. Почему-то я не подумал, что решится в течении 1000 ходоов. 
                В С думал написать ширину с восстановлением пути, но уже не хватило времени - слишком долго шаманил над В.
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                Я считал в А время, которое нужно каждому из них, чтобы догнать другого по данному умению. 
                Если вдруг максимальное время Джедая больше минимального времени Ситха, то все плохо.
                Самое хитрое - обработка случая, когда прибавление умения по данному умению (плохо как-то сказал) у джедая и ситха одинаково.

                А перебирать время побоялся из-за всяких хитрых случаев, но, видимо, их не было.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
Да, С явно сложнее.
UPD: Это к верхнему посту.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Кто-нибудь в курсе, когда будут результаты?

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Станкевич обещал сегодня вечером.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      а поконкретнее время не уточнил? 
      просто уже довольно поздний вечер, а я по-прежнему каждые 5 минут обновляю страницу :)
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
в этом посте появился ярый минусовщик?
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Кстати, почему по D не проходит такое решение:

Заметим, что k - число Фиббоначчи. Тогда пусть fib[m]=k. Если m>k, то решений нет. Иначе, заметим, что поставив 0 в n-1 позицию, количество способов добраться до клетки n будет fib[n-2], а если поставить в n-2 позицию, то fib[n-3]. Получаем, что мы умеем получать количество способов fib[n], fib[n-2], fib[n-3], ...(fib[n-1] вроде не получить). Ну и после этого выставляем 0.

UPD. Оно получает 58 баллов.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    >Заметим, что k - число Фиббоначчи.
    Вот по этому.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Наверное потому, что k может и не быть числом Фибоначчи ;)

    n = 7, k = 4

    1110111

  • 13 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
    что-то многовато 58 баллов для такого решения. разве что в тестах было много ответов Impossible ?

    что маловероятно, так как мое решение прошло на 46, писал на 40 + крайние случаи + обрывал перебор маски когда выполнилось 10^7 операций и выводил Impossible
    • 13 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится
      В Саратове один человек послал вывод Impossible. По его словам это получает 28.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        ну это не так уж и много :)
        в одной из интернет-олимпиад этого года вывод числа 1 получил 40 баллов, впрочем я об этом уже писал ))

        P.S. хм, 58=30+28... ))
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А где-то можно подорешивать задачи?
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится
    на нирке - точно нет
    возможно на informatics.mccme.ru появятся скоро
    UPD: да, видимо появятся - предыдущие 2 года там есть
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

http://neerc.ifmo.ru/school/ioip/standings-2011.html

Неожиданно мало over 300...

13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
 Предварительные результаты появились... Поздравляю Павел!
 UPD: думал первый буду)))
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    только я что-то не нашел на самом сайте путь к этим резам ))
    а резов интернет-олимпиады нет еще?
    а, наверно результаты очного тура могут только зареганные на ИОИП участники посмотреть, вернее обнаружить к ним путь на сайте
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      http://neerc.ifmo.ru/school/io/archive/20110327/standings-20110327-individual.html
      вот они
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        да я посмотрел уже, ссылка нормально работает, я о другом писал
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
          все, появилась ссылка со страницы ИОИПа
          а резов интернет-олимпиады по-прежнему нет((
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      http://neerc.ifmo.ru/school/ioip/

      отсюда можно попасть

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Оу, как можно было сдать не тот файл по D в конце... ( epic fail просмотры баллов кончились...
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
странно, что так много людей с 0 баллов
это наверно те, кто не приехали вообще никуда?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Дипломы будут присуждены по процентам от участников или по баллам? Просто если по баллам смотреть прошлый год, то тут дипломы получат 40 человек.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Результаты интернет-олимпиады доступны по ссылке
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Когда можно ожидать окончательные результаты?
На сайте указано сегодняшнее число, но время уже явно не то. Полагаю, что задержка связана с проблемой в тестах по задаче С.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
В конце олимпиады в Петербурге сервер не выдерживал и жутко тормозил, было весело (хотя баллов из-за этого потерял...)