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

Автор PavelKunyavskiy, 14 лет назад, По-русски

Здравствуйте!

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

Сегодняшний контест для вас подготовила команда SPb SU 4 (Alex-Gran (Александр Грановский), Dmitry_Egorov (Дмитрий Егоров), PavelKunyavskiy (Павел Кунявский)). После долгих раздумий из названия команды можно догадаться, что мы представляем Санкт-Петербургский Государственный Университет. Куда более очевидно, что мы все трое учимся на первом курсе математико-механического факультета.

Большое спасибо за помощь в подготовке задач Артёму Рахову (RAD), Геральду Агапову (Gerald) и Марии Беловой (Delinur) за перевод задач. Также большое спасибо Пете Калинину (KAP) за вычитку условий.

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

Разбалловка задач сегодня стандартная в обоих дивизионах. Хочу заметить, что стандартная — это 500-1000-1500-2000-2500, а не как обычно :).

UPD: Опубликован разбор.

Поздравляем победителей!

Div. 1
rng_58

tourist

SergeiFedorov

Endagorion

Справившихся с 4 задачами, на этом непростом контесте. Отдельные поздравления от меня Endagorion al13n справившимся с задачей D.

Div. 2

handojo1

mastersobg

bdepwgjqet

Всем удачи!

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -82 Проголосовать: не нравится

" Куда более очевидно, что мы все трое учимся на первом курсе математико-механического факультета."-Вы же школьники!

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

То есть стоимость задач не динамическая и задачи отсортированы по возрастанию сложности?

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

After a long time both there is a contest for both divisions. I really liked the previous one which had rated the problems dynamically.

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

Отдельный плюс за фразу

стандартная разбалловка, а не как обычно.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

А я так надеялся на див-1 раунд с динамической стоимостью :(

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -46 Проголосовать: не нравится

so,just fight!

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -45 Проголосовать: не нравится

Всем неудачи?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +46 Проголосовать: не нравится

Разбалловка стандартная, а будет ли традиционно D самая простая в контесте? :)

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -9 Проголосовать: не нравится

А. Вот такой вопрос. С какой скоростью будут поступать ответы на вопросы?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится

Особенно хотелось бы пожелать удачи всем тем, кто сидит в КБТУ, включая авторов

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -58 Проголосовать: не нравится

One more comment.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится

"В первом примере, чтобы увеCти..."

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

    "Найдите, с какой вероятностью вы выступите на сборах хорошо, но при этом сможете увеЗти все призы (то есть все выигранные здоровенные призы можно будет поместить в выигранные и привезенные сумки)."

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

This may be a silly question at this point but — how do I ask for clarifications? (if there is such thing)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +24 Проголосовать: не нравится

лучше бы поспал

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +26 Проголосовать: не нравится

Задача С крутая, спасибо)

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

    Как решать-то?

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

      У меня таки получилось найти период кажется за 5 минут до конца. Задача действительно крутая.

      Замечаем что после любой операции GCD чисел не меняется. Если рассмотрим более подробно, выйдет, что мы не можем обойти ни одной ситуации, которая получается в процессе вычисления GCD Евклидом.

      Соответсвенно вычисляем оценку ситуации по этим этапам. Грубо говоря, у нас есть участок из x этапов, и мы можем пройти за ход a^0, a^1, a^2, ... или все х этапы. Соответственно, если предыдущий этап был проигрышный, этот — выйгрышный (за 1 ход проходим всё).

      Если предыдущий был выйгрышный, то мы никогда не хотим использовать опцию брать все. До 1000 с брутом совпадает, что в таком случае, если в GCD мы отнимаем по y, то тогда оценка такой ситуации — выйгрыш, если x mod (y + 1) чёт, проигрыш, если нечёт.

      Доказательства этого нет (может это вообще неправда), если у кого-то есть, буду рад услышать.

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

        Для нечетных y легко понять, что достаточно чтобы x/y было четно (потому что четность x/y меняется каждый ход)

        Для четного -- в конце остаток на (y+1) равен нулю, то есть четен, и это выигрышная позиция. Докажем, что нечетный остаток -- это проигрышная позиция.

        Если сейчас остаток четный -- его всегда можно сделать нечетным, сделав -1, если остаток не 0. и -y, если он ноль.

        Если сейчас остаток нечетный, то любой ход его сделает четным -- это легко показать для хода в -1, остальные легко доказываются по индукцти (пусть мы доказали, что y^k меняет четность, также очевидно, что y^k * (y+1) не меняет четность, потому что делится на y+1, отсюда y^(k+1) = y^k * (y+1) — y^k очевидно меняет четность).

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

    На чём ломали?

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

    Ощущение "где-то видел, решения не помню". Попытался вывести, начал тупить... Забил, написал жадность, и по результатам жадности внезапно вспомнил и какое решение, и как выводить правильно, и где видел:)

    Да, задача отличная.

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

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

    Ага. 80 минут ее решал, когда решил наконец, решил забить на раунд пока не поздно :)

    Очень интересно, как это придумали люди — у меня получилось только методом внимательного всматривания в ответы и только за час :) Там какое-то простое соображение, или хотя бы какое-то простое доказательство?

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

      Не знаю уж, что вы там увидели. Решение несложно доказывается по индукции, если свести к чему-то нимоподобному.

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

        Можно на "ты" :) Я про решение подзадачи, когда есть ним с одной кучей и можно брать степени b. Доказательство AlexSkidanov выше уже прочитал, и правда просто. Остался второй вопрос — откуда может прийти в голову что важна четность остатка от деления на b+1 :)

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

          Золотое правило — если не выходит придумать строгое аналитическое решение, надо быстро писать брут и искать закономерность:)

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

          Зависимость от четности достаточно очевидна. Осталось посмотреть, что будет происходить в местах где появляются новые ходы.

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

            Сорри, что все еще не допираю. Новые ходы ведь появляются во всех местах начиная с b?.. Или ты имеешь в виду, что нужно посмотреть, что b+1 проигрышная, дальше понять, что тогда до 2b+1 опять будет чередование, потом опять две проигрышных, и так далее, а потом заметить что прыжки на b^2 и больше ничего не меняют? Пожалуй, да, так можно было сделать :)

            Интересно, какое соотношение тех, кто так сделал и тех, кто увидел закономерность в ответах :)

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

              Лично я решал честно. Но думаю большинство увидили закономерность.

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

                Эх, я вот увидел закономерность, закодил, остается 2 минуты до конца и оказывается, что для четных a все же неправильно увидел. Времени исправить не было уже.

                UPD: Сел за тот комп, с которого решал раунд, за 5 минут поправил код и сдал. Печаль.

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

      Читер :)

      На самом деле доказывается очень просто — почему четная выигрышная — потому что из почти всех можно сходить -1 в проигрышную, а из делящегося на a + 1 можно вычесть a и попасть в проигрышную (остаток 1). А из проигрышной мы либо увеличиваем остаток на 1, либо уменьшаем на 1 — то есть попадаем в выигрышную. Если бы я сразу допер написать для a = 2 на бумажке ответы, то сдал бы ее моментально

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

      Ну, я сказал, что a ≤ b, что позиция (, a) — выигрышная (иначе очевидно) и разложил b в a-ичную систему счисления (не подумав сначала про переносы). После чего осталось что-то нимоподобное, что разбилось отдельно для чётных и нечётных a a внимательным взглядом на ответы до 50.

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

        У меня все было ровно так же до момента внимательного взгляда, ага. Надо его прокачивать, похоже :)

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

Спасибо авторам за то что обозначили здоровенный приз как -1 ^_^

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -64 Проголосовать: не нравится

давно такого ГРебаного раунда не было, не считаете?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -23 Проголосовать: не нравится

The problems were as if I was sitting in my English examination to read comprehensions...

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

Расскажите как решать C(div2), чувствую моя реализация не пройдет.

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

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

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

Хороший раунд)) Думаю, скоро таких комментов будет много.

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

как решались D и Е в div. 2 или, соответственно, B и С в div. 1?

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

На чем можно было свалить трехмерную динамику на В? Там какой-то частный случай? Массивы вроде достаточных размеров сделал

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

Э-эх, 10 секунд не хватило сдать задачу

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +46 Проголосовать: не нравится

Это было самое обфусцированное определение декартова дерева из всех, что я видел :)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -7 Проголосовать: не нравится

It should be 500 1500 1500 2000 2500 in Div 2

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

D(Div 2) / B(Div 1)

Я вот так и не понял почему в 1 тесте нельзя выиграть все 3 тура? :(

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

Wizards and Huge Prize i think this problem is too hard to read. at first, it said it want to win all the prizes, but last it said, it want to take all the prize won......

i have read for a long time, but also can not understand the sample >_<

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

Не сдал задачу Д из-за следующей строки

p[i].y = ((ll)C * p[i - 1].y + C) % md;

FAIL=(

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +29 Проголосовать: не нравится

My screencast will be here shortly

Not very eventful through as I spent most of my time with pen and paper ;)

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

what will happen if try to access the index which is not allocated. By default what is stored in it ( here in C++ ) ? http://www.codeforces.com/contest/168/submission/1429535

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится

Почему так затягивается системное тестирование?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +25 Проголосовать: не нравится

When are the system test starting???

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -18 Проголосовать: не нравится

Вот вы мне поясните почему, в задаче B div 2 из авторских примеров не видно что там нужен хвостовой перевод строки?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -14 Проголосовать: не нравится

Problem B div1, is a simple dynamic programming, but the Hardest part of problem was undrestanding of that (at least for me). However with help of writers I got that finally.

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

Задача Б , див 2. Выходные данные: "Выведите программу, из которой удалены все лишние символы..."
До сих пор ломаю бошку над тем , правильно ли это сказано. Подскажите, разве такое возможно?

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

у меня сложилась такая ситуация: задал вопрос, сначала мне ответили — читайте условия, а под конец контеста ответ исправили и дали развернутый ответ, хотел бы узанть, как происходит ответ на вопрос участников? вопрос перескатривают несколько раз?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Я один такой выделился? В первой поленился вытащить из формулы явно время, для нахождения пути до точки максимальной скорости заюзал бинарку, и в результате ТЛ:)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Кажется не надо было в В значения меньшие 1E-9 считать 0...

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

    Мне удалось завалить только одно 1E-7 в своей комнате.

    Но динамику написать можно по-разному, да и тесты, вероятно, бывают получше =) .

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

    В тестесете были специально сделанные мной тесты с ответами около 2*10^-6, которые еще к тому же набирались по большей части как раз такими эпсилонами.

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

      С одной стороны обидно зафэйлить раунд из-за этого. С другой стороны, каждый новый вид фэйла, на котором ещё не грохался, очень поучителен. Приучился сразу как даблы, везде пихать эпсилоны — сегодня огрёб. :) Так что спасибо.

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    #define double long double //No problems =)
    
»
14 лет назад, скрыть # |
 
Проголосовать: нравится +13 Проголосовать: не нравится

Сложный раунд. Если не слоупочить с A и B, можно было бы на 100 мест выше быть.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится -27 Проголосовать: не нравится

GREAT PROBLEMS

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

почему вот этот код 1429288 не проходит 1 претест в B(div2) задаче...вернее почему его оутпут отличается от того что я получаю если использовать запуск...никак немогу понять...

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

    Вы ставите в запуске заключительный перевод строки?

    Вы читаете последнюю строку. Все делаете. Далее у вас неверно что eof ибо вы еще не считали eof. Далее Пытаетесь читать, не читается, в строке остается то же самое. И вы выводите. Без последнего переноса такой проблемы нет, т.к вы сразу получаете eof

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

как вообще такое может быть чтобы double переполнился.. (v*v)/(2*a) вот эта строчка возвращает на одном из тестов отрицательное число. я предполагаю это переполнение (v/(2*a))*v а вот с этой строчкой получаю полное решение кто-нибудь мне может объяснить этот феномен?

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

Можете указать на ошибку в моем решении задачи 168B - Волшебники и минимальное заклинание1426806, если она там есть, так как сейчас в Custom Test'e этот же код выдает верный ответ на 3 тест..

UPD Уже сам понял.

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

Это ж надо таким неудачником быть... B (div 1) упала на 89-ом тесте... Можете выложить его содержание?

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится

Today I learned that in Java StringBuffer is much faster than String .In Div-2 ,Prob B My solution in which i concatenate two Strings give TLE while just replacing the String with StringBuffer gives accepted in this code,and that too in 330 ms. :)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +31 Проголосовать: не нравится

I wonder why updating ratings takes so long.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +29 Проголосовать: не нравится

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

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

Уважаемая администрация, найдите, пожалуйста, хотя бы одного читера среди участников, занявших места с 1 по 35 =)

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +42 Проголосовать: не нравится

Геннадий получил за 2 место здоровенный приз)

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

Что происходит с таблицами результатов? Все времена посылок обнулились.

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

It was a very interesting round with good problems......I think the author is very fond of mathematical problems(my rating goes up yahooooooooo).......however the problem statement of B(Div 1) was not very clear to me and I think for many others........I guessed that participant can take the tours in any order and coded accordingly and got accepted....still I m confused what it says......anyway hoping for a better problem description in future contests.....

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

YOU Must'nt study hard nowadays because you are champion.:......:::::))))))))))))))[ this question is very hard you can try it you must beliave yourself; [problem:177E][Your text to link here...](http://[email protected])

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

Please can anyone tell me why this happened ? I could remove TLE in Div1 A after I replaced

cout.precision(10) ; for(int i = 1 ; i < n ; ++i){cout << ans << "\n" ; }

with

for(int i = 1 ; i < n ; ++i){printf("%.6lf\n",ans) ; }

Is printing after using cout.precision slow ?

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

In case anybody is looking for the tutorial, it can be found here: http://codeforces.me/blog/entry/4214