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

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

Добрый вечер, друзья!

За обсуждением животрепещущей темы использования чужого кода в своих решениях можно и не заметить, что приближается зима 188 раунд платформы Codeforces!

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

Мы — это авторы задач yaro и Rei, куратор раундов Codeforces Gerald и автор системы MikeMirzayanov. Отдельное спасибо Паше (PavelKunyavskiy) и Артему (RAD) за тестирование и дельные замечания.

Последний раз, когда я участвовал в проведении соревнования на Codeforces, раунды еще носили статус "beta". Но чем меньше "beta", тем больше ответственность. В связи с этим желаю организаторам и авторам еще одного успешно проведенного раунда. Участникам же — нестандартных задач и идей, чистого кода (а также чистой клавиатуры) и побольше правильно сданных решений!

Нам представляется непростой задачей оценить уровень сложности задач для всей массы участников, поэтому разбалловка будет динамическая. Все же ради любопытства сделаем следующее предположение об относительной сложности задач: div.1: B-B-C-C-E, div.2: A-B-C-C-E. Угадаем ли?

UPD Приносим извинения за проблемы с очередью тестирования Codeforces.

В любом случае, нам будет очень приятно, если вы оцените наш раунд (после его завершения): short survey.

В упорной борьбе с отрывом в один взлом победителем div.1 стал meret (Jakub Pachocki)!

Доступны результаты первого дивизиона, результаты второго дивизиона.

Разбор.

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

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

Не пойму С див2 оценили как Б див1?

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

Правда ли, что div2 CDE = div1 ABC?

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

Авторы, расскажите о себе, чем занимаетесь/увлекаетесь. Я уверен, что вам есть что рассказать, а людям, думаю, будет интересно.

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

Seeing your bet on difficulty levels, Just one question: Are the last 3 questions of div2 not gonna be the same as first 3 questions of div 1..??

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

maybe there will be GAME OF THRONES effect on the problem statement.. :)

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

Since you said for div 2 it's A-B-C-C-E, I guess you meant that it's A-A-C-C-E for div 1?

Or is it A-B-D-D-E for div 2??

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

I hope that this round will be easier because according to the announcement, it seems that this round is going to be difficult. Thanks !

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

Haaa, Game of Thrones! "Growing Strong" & "As High As Honor"!

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

Хотелось бы что бы в раунде нужно было меньше кодить, а дольше думать над самой идеей.

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

contest is prepared by a lot of people thank you all but I hope it will not be like chinese contest

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

Thanks yaro and also Rei for the contest!

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

what is d diff b/w div 1 & div 2? i am a beginner and this is my first contest. what should i opt for- div 1 or 2? plz reply asap.

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

I am very ill but I am take part in this contest

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

Перенесите раунд на 5 минут, мне мама пирожки с вишнями только принесла^^

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

Очередь уже в 14 страниц, что же будет дальше?

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

judgement is going very slowly... please check

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

What the hell is that?! 15 minutes to get a response for the submission?!!!

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

in queue for more than 10 minutes in Div2 B. judging sucks. :(

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

что с очередью тестирования ??

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

very slow judgement, this is becoming very annoying

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

deleted

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

Не могу взломать никого. Взлом в очереди минут 10, за это время все всех ломают. Полностью.

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

Queued :(

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

How is my solution hacked even when i ddnt lock it ??

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

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

И да, видеть стектрейс в случае весьма странно, хотелось бы человеческого сообщения, причем на языке интерфейса и не абстрактное "данная посылка не последняя", а реальную причину — посылка уже взломана.

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

После слитого к чертям ABBYY Cup написать этот контест было особенно приятно. Спасибо авторам, особенно за C/D. D — довольно классическая задача на "разобрать по полочкам и понять, что происходит".

C — вообще красота. Сначала долго думал, что там поток, потом придумалось красивое вроде бы верное решение с сведением к дереву.

Правда ведь, что в C авторское решение — это построить произвольный остовный лес и удовлетворять требования листьев по одному?

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

    А по какому все-таки принципу удовлетворять требования листьев? К примеру такая ситуация: чтобы удовлетворить текущий лист, то надо протолкнуть воду из другого какого-то листа. Как это надо обходить?

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

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

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

      Вот все решение, вроде бы умею доказывать.

      Возьмем компоненту, подвесим ее за какой-нибудь лист. Пусть в этом листе избыток (если недостаток, то действуем аналогично). Рассмотрим все ребра в компоненте и направим их от данного листа в порядке обхода. После этого рассмотрим их в порядке топсорта (то есть в порядке выхода из ДФСа, запущенного из листа). После этого в таком порядке по каждому из этих ребер нужно протолкнуть максимум, сколько возможно. Утверждается, что тогда если решение существует, то из зафиксированного листа все, что можно, мы выльем. Итого не более чем N-1 итераций по N-1 переливанию.

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

В Div2 D можно было посчитать муравьев на одной прямой(т.е. сколько муравьев на расстоянии от 0.0 ) а на запросы отвечать посчитав расстояние и выведя заранее подсчитанный результат? Заранее спасибо

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

    Почему на прямой? Они же еще вбок лезут. А вообще задача в лоб решается. Что написано, то и реализуем. Только на матрице, т.е. сдвигаем (0,0) в точку (100,100). Почему так? Потому что тогда хватит, проверил на макс-тесте. Еще есть оптимизация: оставить в (0,0), но считать только для одной четверти. Геморнее, но быстрее.

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

      Спасибо такая мысль была но как написать не оставалось время думать.

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

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

      для начального n<=30000 достаточно поля пол -log4(n).. потолок log4(n) на столько же

      т.е доски 10 на 10 вроде как достаточно

      засада чуть чуть в другом — в условиях зачемто подчёркнуто что уменьшается не на все группы по 4 ,а на одну группу за такт .- можно конечно понять что безразницы и быстрее все возможные двигать и не отличать когда муравьи пришли на этом или на прошлом такте — а если зачемто задатся целью точно моделировать то очевидно tle — даже если оптимизировать со сворачиванием ( а оно кстати и не возможно при точном моделировании ибо при точном в клетках всё таки другие значение )

      :(

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

        10 на 10 недостаточно, на макстесте получается что-то около 64.

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

          я чутка опечатался вроде как

          расуждаем так

          если в центре в начале 4**n то в конце самые дальнии единицы будут на манхетеновой длине n от центра

          ну что бы с осями не заморачиватся пусть у нашего массива оси как обычно ориентированны тогда размер достаточного поля это -8... +8 на -8..+8 ( это если в центре 4в 8 муравьёв в начале) т.е поля 16x16 вполне достаточно.

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

            И все же мое решение, которое получает АС, утверждает, что при n = 30000 амплитуда достигает 128. А откуда берется рассуждение

            если в центре в начале 4**n то в конце самые дальнии единицы будут на манхетеновой длине n от центра,

            мне совсем не понятно.

            • »
              »
              »
              »
              »
              »
              »
              13 лет назад, скрыть # ^ |
               
              Проголосовать: нравится -16 Проголосовать: не нравится
              1. число муравьёв постоянно. — для простоты пусть это будет степень четвёрки

              1 конец 1 4 квадратик с 1 16 квадратик 121 64 ... ага сори излишни рано индуктивно подумал.

              но ...

              хм надо подумать

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

    Простое моделирование по времени заходило, если пересчитывать только те клетки, для которых на предыдущем шаге было что-то изменено. Моя реализация на Паскале работала 1.9 сек (спасибо автору за ТЛ!!!) и мне пришлось все считать лишь для одной четверти, поскольку ответ симметричен относительно начала координат.

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

Как решать B(div 1)? BFS с небольшой оптимизацией? Если так, то я думал будет TL.

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

Правда, в B не подразумевалась симуляция? Я как-то умудрился впихнуть её в 800 мс на претестах, и судя по запуску на сервере на макс. тесте, претесты его включают.

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

    У меня за <= 300 в запуске работает симуляция, в которой если мы можем сразу выпустить из клетки несколько четверок, мы это делаем за один раз. Порядок, в котором мы делаем ходы, значения не имеет.

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

      ОК, спасибо, жаль. Я надеялся что там какое-то красивое решение из теории чисел.

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

      А почему не имеет значения порядок?

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

        Я не знаю, я проверил на разных тестах — оно заработало. Хотя идея может быть такая: если в клетке когда-то окажется четверка, то она оттуда уйдет, и нам не важно, в какой именно момент она оттуда уйдет — раньше или позже. Но формализовывать я это не умею.

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

The judegement is very slow. Hope the system test will be finished as soon as possible.

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

А в D есть решения без прекалька?

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

Wow, so many hacks for Div2 Problem C. I guess some coders overlooked the constraints for input data. Anyway, at least it was interesting trying to hack others. Oh and it seems to me that the writers have managed to make a nearly-perfect A-B-C-D-E problem set for DIV2, at least according to number of solvers before sys-test...

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

how cruel the C of div.2 is.

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

i guess one of reason that the pretest is a bit slow is because many TLE codes for C div 2 :)

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

thanks yaro and Rei for the contest! :) next time try to make the system testing a bit faster!

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

how cruel the C in div.2 is! -10^18 1 10^18 is a strong test data.^_^.

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

Реквестирую алерт о проверке посылки. Прождал минут 20 с тупым багом.

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

div1 B тестировать будут еще очень долго))))

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

Survey for the contest....what a democracy..!

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

Хороший контест.

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

Sad sad sad :-(|) ...

...
long long x,y,m;
long long res;
...
int mymx = max(x,y); // int ???
int mymn = min(x,y); // int ???

x = mymx;
y = mymn;
...
»
13 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

system testing has also been too slow!!! what is the reason?

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

Oh,It my best rank until now.

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

Status of submission 3895303 is still "Running on pretest 8", why?

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

my submission 3887964 for Div-2 B failed on the last test case! :(

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

oh damn, i forgot to update the volume of vessels...

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

I don't understand why i was got RTE in div-2 B. I just assign the size of sting s to n and it gets AC. AC link http://codeforces.me/contest/318/submission/3895790 RTE link http://codeforces.me/contest/318/submission/3888165 Can any one explain it?Thanks in advance.

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

the worst thing about codeforces is that the main testing takes place after the contest ,

if it would have told that my solution is wrong after running the test cases during the contest ,i would have corrected my solution this thing needs to be changes,i m not sure even after passing pre test cases whether my solution will increase or not

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

Waiting Contest rating update.

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

I think it's A-B-B-D-E for Div 2

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

Я просто тащусь от системы СF.

Мое решение В — одно из двух, которые упали с TL36.

Я отправляю его в практис — система, как я понял, для экономии времени просто содрала вердикт с сабмита на контесте — ТЛ на том же 36 тексте, который появился моментально; вердикты по времени на остальных тестах вроде бы совпадают (пересмотрел где-то половину).

После этого я делаю 8 подряд сабмитов своего сорса, добавляя только пробелы, из них 7 подряд — под тем же компилятором. Все 8 укладываются, при этом ни у одного из них нету АС 1.000, все хотя бы на 1 тик быстрее.

После этого я беру решение naagi, которое тоже получило странный TL36 и было отправлено с интервалом 34 секунды относительно моего. Отправляю его в практис — оно тоже проходит с запасом.

Вообще возникает естественное желание реквестировать реджадж сабмитов, которые получили тл36) Да и вообще — сабмитов, у которых ТЛ30+.

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

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

    Но если что я не против реджаджа :)

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

D (Div. 1) was very similar to TCO 2A Hard. I was able to copy & paste 1/3 of the code.

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

Is div-2 C can be solved by Extended Euclid?

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

    Div-2 C is simple brute force, but you need to take care of the corner cases where the answer is 0 or -1 or when one of x and y is negative.

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

      It's not a 'simple brute force'. Consider the Test Case -1000000000000000000 1 1000000000000000000. With a pure brute force this TC would definitely give TLE. The trick is to consider the case, when one of the numbers is <0 and the other one >0. And only then you can do brute force. Edit: oh, sorry, I missed the last part of your comment JuanMata

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

Can any one tell me about SergeiFedorov's solution for Problem E? ... My solution get TLE when Princess && Shadow are within a same block....

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

Контест-бомба! Спасибо авторам, надеюсь вы будете давать контесты чаще :)

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

For all those who solved problem D, where do you get the array?

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

Как понимать взлом игнорирован, в протоколе:

Взлом не использует генератор
com.codeforces.contester.exception.ChallengeIgnoredException: Challenge is ignored because of the challenged submit is not the last accepted now [submissionId=3887152].
com.codeforces.contester.processor.impl.ChallengeProcessor.internalProcess(ChallengeProcessor.java:100)    com.codeforces.contester.processor.impl.ChallengeProcessor.process(ChallengeProcessor.java:63)
com.codeforces.contester.processor.impl.ChallengeProcessor.process(ChallengeProcessor.java:36)    com.codeforces.contester.processor.RunnableFactory$ProcessorRunnable.run(RunnableFactory.java:51)
com.codeforces.contester.ContesterServletRunnable$2.run(ContesterServletRunnable.java:169)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
  • »
    »
    13 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Похоже, что человек, которого хочешь взломать, перепослал решение.

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

    challenged submit is not the last accepted now

    Это может значить, что участник перепослал решение, или что его кто-то взломал раньше, чем дошла очередь до проверки этого взлома, или что-нибудь более редкое. Что именно произошло, можно узнать в логе этого участника.

    Действительно, не очень понятно и не очень удобно.

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

Interesting round! Can't wait to see editorial for Balance.

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

when is the next round comming?

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

any hint about Div1 D ?