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

Автор Egor, 15 лет назад, По-русски
Вроде бы контест уже совсем закончился
Кто-нибудь умеет вторую решать? Я послал наивное решение, которое в худшем случае работает за 22n, но придумать для него контртест не смог.
  • Проголосовать: нравится
  • +27
  • Проголосовать: не нравится

»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Кто-нибудь может объяснить, зачем вообще во второй дается последовательность ходов? За 2 часа так и не удалось понять :(
  • »
    »
    15 лет назад, скрыть # ^ |
    ← Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

    Просто чтобы "проэмулировать" какое-то развитие игры

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

    Там получается, что, когда мы думаем куда бы походить на первом шаге, мы не знаем куда будет ходить Бесси; когда мы думаем о втором ходе мы уже точно знаем первый шаг Бесси и никак не знаем последующих. Стратегия должна быть такая, чтобы Джон рассуждал именно исходя из этих знаний, и ходил в гарантированно выйгрышную позицию.

    • »
      »
      »
      15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Но при том, что "Note that even though Bessie's moves are provided to you in the input, you are to specify moves for FJ that would have worked no matter what Bessie chooses", разве это не одно и тоже что надо найти последовательность которая выигрывает в любом случае т.е. независимо от ходов Бесси?
      • »
        »
        »
        »
        15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Да, но после того как она совершила ход мы уже кое что новое знаем об игровой позиции, и можем найти не просто решение которое всегдавсегда хорошое, а пойти по чуть более лексикографически меньшему пути :)
        • »
          »
          »
          »
          »
          15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится +3 Проголосовать: не нравится
          Однако нам нужен лексикографически наименьший путь, который работает независимо от ходов коровы, а не такой, что в зависимости от ее ходов мы пойдем по нее или более меньшему
          • »
            »
            »
            »
            »
            »
            15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Но все же, я полагаю, те ходы, которые мы сделаем (Джоном и Бесси), мы можем учитывать :)
            Насколько я понимаю они хотели сделать задачу какбудто с библиотекой, но без библиотеки. То есть мы на каждом шагу знаем то что было до этого, но не знаем будущих ответов:) 
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +16 Проголосовать: не нравится
    Я так думаю, в каком-нибудь другом дивизионе ходы коровы заданы жестко
    А тесты влом переделывать было
»
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Сейчас, с товарищем paulik обсуждали эту задачу и он предложил такую идею на вторую задачу:
Делаем перебор всех состояний и считаем выйгрышное оно или нет. На каждом ходу у нас есть 4 варианта куда пойти (по два варианта хода на Джона и Бесси), однако, если мы посмотрели, что при любом ходе Бесси ход Джона Bottom хороший, то вариант Top даже не рассматриваем (итого рассмотрели только 2 варианта), а если это не так, то значит Джон обязательно ходит Top в силу обещаной корректности и мы рассматриваем только ветвь с известным ходом Бесси. Итого 3^n вместо 4^n.
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Не очень понятно, как можно гарантировать корректность для чего-то, кроме самого первого хода - мы же не знаем точно (и нам надо узнать), выигрышная позиция или нет.
    • »
      »
      »
      15 лет назад, скрыть # ^ |
      ← Rev. 3  
      Проголосовать: нравится 0 Проголосовать: не нравится

      Можем, мы переходим в состояние которые либо мы проверили на корректность (случай bottom) либо потому что нам обещали корректность, а раз bottom не обязательно корректен, то top должен быть :)

      P.S. Да, главной загвоздкой в этой задаче было понять условие так как автор, а как это именно - узнаем вскоре :)
      • »
        »
        »
        »
        15 лет назад, скрыть # ^ |
        ← Rev. 2  
        Проголосовать: нравится 0 Проголосовать: не нравится

        Но чтобы узнать, куда делать первый ход, мы для начала должны проверить на корректность bottom. Т.е. сделать 4n - 1 раундов, нет? Или мы "предположим" корректность и что-нибудь случится?

»
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Я написал рандомизированное решение с запоминанием для первых 7 ходов. Вроде бы работает мгновенно на моих тестах. Но в худшем случае тоже должно быть 22n. А вообще, условие как-то странно написано. Я только через час заметил, что дорожка круглая :)
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Ребят, там в конце можно в обе стороны двигаться или только по направлению к концу? Ну то-есть я считал что конечная позиция хорошая если: (end<=k) or ((m-end)<=k), это правильно?

ПС. разумеется что решение как у Egor :)
  • »
    »
    15 лет назад, скрыть # ^ |
    ← Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

    Я тоже так считал. Судя по ограничению K <= floor(M/2), это должно быть правильно, иначе зачем оно вообще нужно.

»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Может кто-нибудь кинуть ссылку на условия (на офф. сайте написано что соревнование закончено и все)
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
А как вторую делать за 22n? Я только n*22n знаю.

  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Скорее всего именно это имели ввиду.
    • »
      »
      »
      15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Просто ~3*10^8 еще может пройти на их машине, а вот ~3.8*10^9 вряд ли.
      • »
        »
        »
        »
        15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Мне кажется что такого никогда не будет. Там либо ответ быстро будет найден, либо быстро будет вылетать вторая подзадача(если у тебя такое-же решение как у меня), то есть будет находиться ход Бесси который сделает комбинацию проигрышной.
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится
    Можно заранее посчитать пройденное расстояние при всех возможных выборах FJ и Бесси на первых n/2 ходах, а для второй половины ходов заранее посчитать для всех возможных выборов числа A и B, где A - коэффициент, на который помножится пройденное коровами расстояние за первую половину ходов после пройдения этой второй половины, а B - свободный член, который к A*расстоянию прибавится. Используя эти величины, можно потом каждый из 2^(2n) возможных выборов за O(1) оценивать.
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
А кто решал серебряный? Я первую задачу решил сжатием координат + дейкстрой, получилось довольно много писанины, может проще решалась как-нибудь? Вторая - перебор с отсечениями? А в третьей жадник на 15 строк, или я неправильно условие понял?
  • »
    »
    15 лет назад, скрыть # ^ |
    ← Rev. 2  
    Проголосовать: нравится +1 Проголосовать: не нравится

    Во второй dp[i][j]...это можем ли мы собрать сумму i в 1-ый ангар, и сумму j во 2-ой ангар...Дальше вроде понятно, как делать :)

    • »
      »
      »
      15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Классно! Я вечно дп не вижу :/

      Ну мое решение порядка 1-1.5 секунд работало на рандомных макстестах, так что буду надеяться на мощь забугорных компов :)
    • »
      »
      »
      15 лет назад, скрыть # ^ |
      ← Rev. 3  
      Проголосовать: нравится 0 Проголосовать: не нравится

      Не знаю правильно или нет . результатов ещё нет . Но я решал  2 задачу так :

      находил все возможные суммы и брал первую большую (s/3), если нацело не делится то добавлял 1.

      Третью то-же жадным, а первую не придумал. 


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

А кто знает когда результаты будут. Я на новом их сайте первый раз участвую. Раньше в среду уже на почту присылали , а в пятницу на сайте было. Сейчас зашел, ничего нет.

»
15 лет назад, скрыть # |
← Rev. 7  
Проголосовать: нравится 0 Проголосовать: не нравится

Ask  msg555  - it's his task.


Edit: Writing handles doesn't work...

Edit2: Ok, thx

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

Первый раз участвую в обновленной usaco и она мне явно уже не нравится :) Фишка с подсвечиванием условий цветом дивизиона, помоему была отличной, хотя это мелочи.


Вопрос в другом, что насчет запуска тестирования на их стороне своими тестами? Эта фича исчезла или глубоко спряталась, что я не смог отыскать?
А ранжировка задач по сдаваемости тоже исчезла или просто в этом раунде такое совпадение?

P.S. Отсылка резов на мыло заранее тоже было хорошо ;)
P.S.S Пишем письменную петицию Колстаду какому-то новому чуваку с подписями, пускай Гена на IOI передаст ему лично и пожурит за урезаный функционал ;)
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Это еще что, в первом контесте оно даже не компилило и не проверяло на семплах :) Надеюсь, со временем старый функционал перекочует в новую систему.
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    В одном из первом писем, где они извинялись за задержку и отсутствие октябрьского тура, они писали, что Колстад больше не имеет отношения к USACO. Там теперь новый какой-то чувак,
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Судя по результатам многие неправильно поняли задачу B. Кто понял, объясните пожалуйста. И как решать остальные задачи? =)
  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    1. Ахо-Корасик + ДП, вроде стандартная задача.
    2. Последовательность ходов Бесси не важна, надо сгенерировать лексикографически минимальную последовательность ходов фермера, которая выигрывает в любом случае.
    3. Ответ = произведение ответов по каждой связной компоненте: если компонента дерево, то ответ количество вершин в ней (я этого не заметил и писал ДП, мне после контеста сказали), если в компоненте ровно один цикл - то ответ для нее равен двум, иначе ответ равен нулю.
    Как-то так.
    • »
      »
      »
      15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Спасибо. В задаче Б вроде так и делал, но прошел только 1 тест как у многих. За O(N*22N)
      Вот код
    • »
      »
      »
      15 лет назад, скрыть # ^ |
      ← Rev. 4  
      Проголосовать: нравится +5 Проголосовать: не нравится

      По-моему, во второй задаче, у вас:

      1) Неправильное понимание условия.
      2) Неправильное решение неправильно понятой задачи.

      Требовалось найти лексикографически наименьший первый ход фермера, который бы привел его к выигрышу. Затем, фермер делает этот ход, после чего Бесси делает первый ход, который дан в инпуте. После этого коровы куда-то бегут. Далее, уже из этой позиции, все повторяется: мы находим лекс. мин. ход, который приводит к выигрышу, после которого Бесси делает второй ход из инпута и т.д.

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

      По задаче, как я говорил выше, я написал рандомизированное решение с небольшим запоминанием. Оно проходит все их тесты, хотя я и не вижу причин, почему теоретическая оценка его времени работы не есть O(22n). Вот код:
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Как решать 3 задачу в  Bronze div. ?
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
http://usaco.org/current/data/sol_cowrun.html