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

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

Привет, Codeforces!

26 марта 2015 года в 19:30 MSK состоится очередной раунд Codeforces #297 для участников из второго дивизиона. Традиционно, участники из первого дивизиона приглашаются поучаствовать в соревновании вне конкурса.

Это мой уже третий Codeforces раунд, надеюсь, я вам еще не сильно надоел.

Хотелось бы сказать большое спасибо Максиму Ахмедову (Zlobober) за помощь в подготовке задач, Марии Беловой (Delinur) за перевод условий на английский, Михаилу Мирзаянову (MikeMirzayanov) за замечательные системы Codeforces и Polygon и за идеи некоторых задач, а также моим старинным друзьям Павлу Холкину (HolkinPV), Илье Лось (IlyaLos), Виталию Кудасову (kuviman) и Артуру Свечникову (ikar) за прорешивание задач и вычитывание условий.

Участникам будет предложено пять задач и два часа на их решение. Разбалловка будет объявлена позднее.

UPD Стоимость задач будет плавной динамической с шагом в 250 баллов. Подробнее об этом вы можете прочитать здесь. Задачи будут расположены в порядке предполагаемого возрастания сложности.

UPD2 Соревнование завершено! Спасибо всем кто участвовал!

UPD3 Разбор уже ждет вас здесь.

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

  1. cikofte
  2. fcspartakm_2
  3. stealife
  4. GITLER228
  5. alpq654321
  • Проголосовать: нравится
  • +175
  • Проголосовать: не нравится

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

hello, i have decided that i'll downvote every comment in this post for fun :)

»
9 лет назад, # |
Rev. 3   Проголосовать: нравится +7 Проголосовать: не нравится

Your last contest had nice problems.

Thank you for creating another contest.

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

I think you mean "translating into English"? :)

As I see that you are from Russia and the google translate of your blog in Russian gives "translating into English" too

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

The comment is hidden because of too negative feedback, click here to view it :))

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

It was good

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

Why does the registration close in less than 2 hours?

Edit: Fixed :)

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

Is the registration time correct?? It will finish in the next hour

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

:D .

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

Thanks for the contest . Hopefully it will be a great learning expirience for everybody.

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

to div1 users: please dont create new accounts :||

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

Scoring distribution?

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

Codeforces Round #297 (Div. 2) 297 which is divisible by 9; 2+9+7=18=1+8=9 which is also divisible by 9; 2+7=9 && 9 which is also div by 9; Have any problem of divisible by 9? Best of luck.

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

I have a doubt. If 2500 people out of 3000 solve A , 2400 solve B , then how many points will be allocated for A and B (lets assume no of Solutions for C,D,E is < B)

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

Вечером после контеста Илье стало скучно, и он очень захотел помаксимизировать. смотреть бесплатно и без смс

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

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

      _ Он вспомнил, что у него есть набор из есть n палочек и напильник_ напильник?? что-то я в этой жизни не понимаю

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

Классный раунд!
Как решать D?

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

    Известная задача, один из вариантов решения — вырезать "уголки". Когда все плохо? Когда есть клетка со стеной, для которой, например, свободны одновременно клетки справа, сверху и сверху-справа (аналогично для других 3 направлений). Забросим все такие клетки в сет. Пока в сете что-то есть — берем оттуда клетку, чистим ее и проверяем, не нужно ли теперь добавить в сет кого-то из ее соседей.

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

      Кто-нибудь сдал что-то не похожее на это?

      Можно ли сдать что-то вроде этого: для каждой компоненты-комнаты найдем xmin, xmax, ymin, ymax. Расширим эту компоненту до соответствующего прямоугольника. Потом объединим все эти прямоугольники (соответственно опять расширив до прямоугольников их объединения). То что получится в конце и будет ответом.

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

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

        А не слишком много итераций этого процесса потребуется?

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

          Возможно. Наверное на этом и построен претест 12. Особенно кажется много проблем доставляют именно касающиеся прямоугольники. Я не знаю как их хорошо обрабатывать, без них, кажется, можно просто сканлайном с dsu.

          Я и спросил чтобы узнать, может кто-то знает или кто-то сдал :)

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

            У меня такое-же решение, пока что получает WA32. Пытаюсь пофиксить, пока плохо получается

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

          UPD: Нет, это неправда.

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

        Я так начинал. Найти прямоугольник, при заливке прямоугольника проверять, не касается ли он '.'. Если касается — заполнить соседнюю строчку/столбец с такой же проверкой. Потом я понял, что искать прямоугольник необязательно, можно начинать с одной клетки '.'. Сабмишен

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

        Я начинал это писать, но потом понял, что нужно будет много раз объединять на таком тесте:

        .*.*.*.*.*.*.*.
        ..*.*.*.*.*.*.*
        

        Клетки площади один сами по себе представляют прямоугольники и их расширять не нужно. Но штуку слева нужно расширить сначала до площади 4 (и тогда она склеится с одиночной клеткой и будет площадь 5), потом до площади 6, ну и так далее. Если делать объединения в стиле "пройдёмся по всему полю и пообъединяем то что можно", то понадобится линейное от длины стороны количество итераций. Возможно, можно объединять более "умно".

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

          А что, если искать эти xmin, xmax, ymin, ymax поиском в ширину, только с условием того, что можно идти по-диагонали?

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

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

            Но ведь не всегда можно идти по диагонали, например:

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

              У меня идейно решение именно такое, но тест типо вашего пройдёт вообще безо всяких трудностей. Я на каждой итерации цикла не расширяю прямоугольники, а удаляю стены, которые мешают какой-либо комнате появиться.

              Так и не смог придумать конкретный тест, где это работат медленно.

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

                Работает медленно это тогда, когда в списке wall есть много стен, которые не мешают никому, а в конце есть стены, которые кому-то мешают, и удаление такой стены делает мало других стен удаляемыми. Решение будет работать за O((nm)2) Например:
                1998 строк, состоящих из 2000 символов *
                2 строки такого вида, как я показал выше.

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

                  Обе эти строчки отсекутся на первой же итерации и всё закончится сразу.

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

        Я проходил и заливал комнаты различными цифрами(различными для каждой комнаты) потом для каждой цифры находил x_min, x_max, y_min, y_max и вырезал что внутри.

        Получал TL на 12 тесте.(Python)

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

          Это доделывается до TL32, но, наверное, не на питоне.

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

Thanks fcspartakm

Nice contest :)

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

The scores of problems was so low that hacking was important than solving problems...

Why????!!!??? :(

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

What is solution to problem C...it seems like simple task but I cannot pass Pretest 4

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

    Just make right rectangles. The square would be bigger, if the side of rectangle would be bigger. Let's sort them! And after that you can use dinamic programming.

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

I had a strange problem during the contest, two times my default compilator changed from GNU C++ to GNU C (and I get two compilation errors :)). Did someone else noticed such thing too?

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

Great contest! Thank you fcspartakm!

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

Could somebody give me a hint of how to approach D and E?

Edit: Nevermind, the editorial was posted surprisingly quick.

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

I see the most hacks are in problem B.

Can anyone tell us what's the hacking test case ?

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

    It was just a big test(maxtest). Some people used std::reverse and the complexity of their codes was O(N^2).

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

    Just TLE. We must not swap symbols in all substrings, because it gives O(n / 2 * m) orepations

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

    Many people did a slow O(NM) solution, reverse all the segments.

    Of course it's not passing for test case like:

    aaaaa... 100000 1 1 1 ...

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

Спасибо за оперативный разбор!

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

Pff, I'm so sad because I didn't figure out E ... :(

Update: Nooo, my C is wrong :( :( :(

Those hacks saved my a*s :D

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

    Same here, my C got pretests wrong, because of integer overflow!

    So I make up for it with lots of hacks :)

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

Why this test generator is wrong ? the only explanation for that is 1 space in the end of file, because this works well.

Why 1 space generates an invalid input?

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

    Because it is an invalid input. Somebody may read using fread with a buffer(sometimes I do so) and when you see the size of the buffer, then you can generate a test with a lot of spaces in order to make his/her buffer overflow and hack him/her.

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

Подскажите, что нужно было делать в задаче D?

Валится на 12 тесте, и потому даже нет возможности узнать, что конкретно работает не так...

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

    Я здесь косяки отлавливал:

    4 5
    .**..
    .*...
    ..***
    ***..
    

    Должно получиться:

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

      Не могу понять, почему тут 10479062 падает на 92 тесте (RE). За границу массива вроде как не должен выходить. Может, кто-нибудь помочь с этим?

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

Problem C was so ill framed in English :/

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

791 ACs on C. Then why would this problem have 1000 points? Isn't that the general solve count for problem C in a typical CF round? -___-

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

Поздравлять людей, зарегавшихся 4 часа назад... Поэтому и читерят.

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

    Мне кажется, что нужны идеи для борьбы с подобными "смурфами".

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

WA during the contest : 10474140 AC after the contest with the same code : 10476119 Just put a #include in a comment Any explanation ?

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

    "Wrong answer on hack 1"

    Doesn't it mean weak cases?

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

      If I was in other room ,the code would have passed system test ! It isn't fair

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

        You mean that the solution didn't even pass the pretests or it passed them and then it was hacked?

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

          Passed the pretests then it was hacked after that I wrote a new code and got Wrong answer on hack 1, after the contest I re-submitted the same code ( which was getting WA on hack 1 ) and got AC

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

    i had the same problem before in another contest, the thing guys told me back then was that limits.h is somehow not supported but i dont know exactly whats wrong...

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

      Problem A got accepted and limits.h was included

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

        its strange... i think it would be more useful if you asked this in stackoverflow.com

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

Was the round Unrated? if not, when will the ratings be updated??

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

in problem C in the test case 4: 8 5 3 3 3 3 4 4 4 how correct ans is 25?

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

On C it wasn't particularly clear that multiple rectangles are being created... "Ilya decided to make a rectangle from the sticks" implies at least initially that there is only one rectangle. (Or maybe I just need to read more carefully)

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

    Agree. Google translate does a better job:

    "Ilya decided to make rectangles of the sticks."

    I hope that the translators be more careful about the singular/plurals.

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

D was one of the most interesting problems i have ever seen. Too bad i took wa on #12 :(

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

Thanks who send to B with O(n^2) complexity

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

can anyone help me why this solution got WRONG ANSWER http://paste.ubuntu.com/10685457/

UPD : it's okay i got it now!!

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

Can anyone tell me why my C solution was skipped whereas the same code got accepted after the contest?

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

Guys, did I solve one or two problems?

One

I meant two

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

How Silly were the pretests on C,,,,, Actually, how silly i am :( Notice the differences between these two solutions- http://codeforces.com/contest/525/submission/10464785 and submission:http://codeforces.com/contest/525/submission/10477043 . Anyway, thanks fcspartakm for nice contest :)

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

I'm afraid to seem impatient but when ratings will update?

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

is the contest unrated??

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

В Задаче Е у меня код локально проходит претест 1, но в "запуске" здесь (как и на претесте) почему-то неправильно считывает массив a и соответственно выдает WA. Никто не знает, с чем это может быть связано?

P.S.: я понимаю, что решение словило бы TL

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

    Попробуй запустить с MSVSC++

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

      Спасибо большое. А почему такая "магия"?

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

        Скажу честно — понятия не имею. Просто если есть какие-то неожиданные отличия в работе, то сразу меняю компилятор на любой C-шный компилятор попавшийся. Но на MSVSC++ не припомню подобных фэйлов.

      • »
        »
        »
        »
        9 лет назад, # ^ |
        Rev. 4   Проголосовать: нравится +5 Проголосовать: не нравится

        Этот цикл:

        do
        {
           fact[i]=fact[i-1]*i;
           ++i;
        } while (fact[i] < s);
        

        Плох тем, что присваивание идёт fact[i], а сравнивается с s уже fact[i + 1]. Соответственно, цикл легко выйдет за границу массива fact и наступит undefined behavior, т.е. результат будет зависеть от компилятора.

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

          Не в данном случае, но идею вашу понял. Спасибо

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

Would you mind putting " UPDX Contestants' rate changed" in the end of the post, when new rates apply?

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

I'm waiting for ratings...

Do they come tonight????

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

I am staying up all night just for looking at the rating update. When will it be updated???

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

I cannot see the problems in the "PROBLEMSET".

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

nagetive contribution makes me upset Ծ‸Ծ

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

This is the code used in Winner's C: http://codeforces.com/contest/525/submission/10463905 This is the code used in enesoncu's solution to another problem: http://codeforces.com/contest/436/submission/10422970

Doesn't it look very similar!

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

Can you tell me what is wrong with hacking using generator? I tried three times during this contest, but i have got Validator 'val.exe' returns exit code 3 [FAIL Expected EOLN (stdin)]

Probably this is connected with the fact that i have used std::endl? How to do it correctly? Should I use "\n" next time? Because I really could have done at least 2 hacks!

Thank you

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

Can you help me?

http://codeforces.com/contest/525/hacks/143414/test

Judge return this:

Validator 'val.exe' returns exit code 3 [FAIL Token parameter [name=s] equals to "/********...correspond to pattern "[a-z]{2,200000}" (stdin)]

I couldn't find any problems...

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

Thanks for interesting problems and weak pretests. There were nice opportunities to hack.

»
9 лет назад, # |
Rev. 3   Проголосовать: нравится -8 Проголосовать: не нравится

Чё за бред блин duck

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

:)

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

Could somebody please help me to interpret the following wrong answer on problem D:

Test: #12, time: 717 ms., memory: 4404 KB, exit code: 0, checker exit code: 1, verdict: WRONG_ANSWER expected: '***..*......*...****.*****.*.....**.*******.******.*..***.***.**', found: '***..*......*...****.*****.*.....**.*******.******.*..***.***.**'

Both strings are identical, but still in some way the validation system seems not to like my string. Thanks in advance.

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

    Maybe you print '\0' at the end of your answer? :P

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

      rather not, as the wrong answer is in test 12 in the 6th word. In such situation all preceding tests should also fail.

      Thanks anyway. I am really puzzled with this error.

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

        The line is actually 2000 characters long, but Codeforces displays this kind of error like

        [some prefix]+"..."+[some suffix]

        Thus, in your error, the "..." unfortunately looks like part of the line. The real error is somewhere in the middle :P