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

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

Всем привет!

Да-да, вы всё правильно поняли, после долго перерыва в четыре месяца с того момента, как на codeforces был последний div. 1 раунд, не приуроченный к какому-нибудь соревнованию, вы вновь имеете уникальнейшую возможность поучаствовать в обычном codeforces-раунде. Да, именно то, что написано на упаковке.

Никаких футболок для top-x участников! Никаких многоуровневых систем отбора за право бороться за суперприз! Никаких эзотерических языков или оптимизационных задач! Да мы вам даже разбалловку до самого конца раунда не объявим! Всё будет именно так, как это было в старые добрые времена.

Итак, этот раунд для вас готовили Иван Смирнов (ifsmirnov) и я (adamant). Мы хотим поблагодарить Максима Ахмедова (Zlobober), Александра Фролова (fcspartakm), Эдварда Давтяна (Edvard) и Михаила Мирзаянова (MikeMirzayanov) за помощь в подготовке раунда, его прорешивание и дельные советы. Отдельно спасибо Edvard за то, что он выступил в роли координатора в этот раз и традиционно MikeMirzayanov за системы polygon и codeforces.

Всем удачи! Мы очень надеемся, что вы получите получите много удовольствия, участвуя в раунде :)

UPD. Разбалловка:

Div. 2: 500-1000-1500-2000-3000

Div. 1: 500-1000-2000-2000-3000

UPD. 2. Также спасибо большое Александру Фетисову (AlexFetisov). Прости, пожалуйста, совсем забыл тебя отметить :)

UPD. 3 Если вы пропустили разбор, то он здесь.

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

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

My nerves are thin after previous contests, I hope one amazing and interesting round !

Good luck and without frustrating bugs :)

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

Пришло время хорошенько разобраться с суффиксными структурами:D

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

Hahaha.. This blog has been written so well.. Waiting for tomorrow...

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

When i first see adamant is the author of the contest, my first impression is.. i have to read about policy based DS

(if you know what i mean :D )

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

"We even will not tell you the scoring untill the very end of the round!" — didn't you mean very beginning of the round :P?

Btw, I will keep some suffix array prepared for tomorrow :D.

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

I have missed so many contests in 2016 because of the late time in China -- the power and the internet will be interrupted in my school at 23:30 UTC+8... But this contest is next to the holiday which allow me to fight again! I wish I can find the feeling of coding.

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

I have missed so many contests in 2016 because the power and the internet are always cut off at 23:30 UTC+8 in my school. But this contest is next to the holiday so that I can fight again! I wish I won't forget the feeling of algorithm competitions.

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

666 is the sum of the first 36 natural numbers and thus it is a triangulal number.

Notice that 36 = 15 + 21; 15 and 21 are also triangular numbers; and 15^2 + 21^2 = 225 + 441 = 666.

What we see here? Triangles in the perspective. We must go deeper! Do not you think it's like this?

The largest pyramid in Egypt is the Pyramid of Cheops (IV Dynasty), the Pyramid of Khafre (IV Dynasty), Red Pyramid, Sneferu (IV Dynasty).

(IV + IV + IV) : 3 = 4

In the perspective appearance of divisions 4 officially confirmed.

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

    666 is also a special and popular number in China. When we Chinese see something is so cool or so amazing, we will say it is "666" or "66666666666"(very 666). This special meaning of this simple number begins just in these years. Similar with 666, 233 is another special and popular number in China, which means "LOL" -- Lots Of Laugh. If we Chinese see something is funny or ridiculous, we may say "233" or "2333333333333333333333" (very 233).

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

наконец то, есть шанс повысить свой рейтинг

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

Очень хотелось поучаствовать, но нет, сорри. Сегодня лучше следить за выступлением Pomoika 2 Team.

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

No t-shirts for top-x competitors

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

Да мы вам даже разбалловку до самого конца раунда не объявим!

Понимать в прямом смысле этого слова?

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

yesterday my team ended first in our university ACM qualifications, so I hope to carry that achivement in today's round :D

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

my first contest after a long time I just hope I do this good

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

good luck for every one

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

Since everyone's sharing their thoughts about the contest I'm gonna share mine too. 3 contests ago I was thinking if I make it in top 200 I'm gonna become purple again, but I failed. So 2 contests ago I was thinking if I make it in top 100 I'm gonna become purple again, but again I failed. So before previous contest I was thinking if I make it in top 50 I'm gonna become purple again, but yet again I failed. Today I need a place in top 5. Wish me luck!

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

Finally a chance for me to get back in Div2 :)

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

Кульков, я ожидал от тебя большего.

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

div.2 E is div.1 D
such a usual contest

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

    That's because div1 C and D share the same full point -- 2000. So it is to say, they think div1C and div1D have the same or similar difficulty.

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

      On my mind the difficulty of problems div1C and dic1D is different for div1 and div2 participants. It is about obvious the problem D is harder, because there tricky cases there. But for div2 participants who not familiar with combinatorics it's about impossible to solve problem div1C while they can come up with the solution for the problem div1D (it is not require some specific knowledges). So I decided and the guys are agreed to give the problem about four points to div2 round.

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

Пусть это будет первый и последний раунд который сделал adamant.

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

    воу-воу-воу, сынок, тут только я на Кулькова гнать могу. Это должность.

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

    Дорогой Алексей!

    Мне очень жаль, что факт моего участия в подготовке этого соревнования столь сильно расстроил вас. Я очень ценю мнения других пользователей и всегда прислушиваюсь к ним. После долгих раздумий над сложившейся ситуацией, я принял тяжёлое, но, как мне кажется, правильное решение. С этого дня я перестаю заниматься проблемсеттингом. Моё участие в контестах также будет сведено к минимуму, дабы избежать искушения вновь начать придумывать и готовить задачи. Вместо этого я посвящу освободившееся время своему новому хобби — написанию ехидных комментариев в интернете.

    С уважением, Александр Кульков (aka adamant)

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

CF and its overcomplicated problems are stoooopid! Who needs such hard problems in their life? They making quantum computers and soon all these precious algorithms will become useless. They make fast processors and cheaper memory, and array sizes can be as huge as anything. Any average billionaire can't solve even a div2 C yet they're billionaires. Seriously, what are we doing here? I am never coming back here. My last comment on CF ever!!!!!!

I request my account to be permanently deleted.

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

In Div. 1 D there is a sentence in the problem statement.

"Note, though, the problem can include several records in one test, you can hack other people's submissions only with the test of one plate, i.e. parameter t in a hack test should be equal to 1."

Does this not go against the philosophy of hacking, which is that any hacking contributes to the best possible set of test cases, and that any incorrect solution should be hackable? There can be solutions you know are sure to fail system tests, but cannot be hacked by any test case (for example, TLE). This seems to implicitly states that the problem setters believe their test cases are best possible and do not need contribution from participants.

However, an easy fix could be to change all the system testing to have t = 1 so that hacking and system testing are identical.

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

    I guess that for this particular problem testing the speed of the solution can be easily done with the tests from problemsetters. And the hacking tests are used for checking the correctness. The other reason is, perhaps, that it just takes too long to check the correctness of the answer provided by the solution, hence the limitation:)

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

Aaah, this C is so awesome but I couldn't finish it on time :( We can store the states through every sqrt(100000) numbers, right?

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

Есть ли контр-тест на такое решение в D?

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

Почему-то ва2.

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

    Эээ, а почему какая-то точка должна остаться на своем месте?

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

      Просто показалось, что это правда

      На листике не смог найти теста, который бы это ломал

      Закодил — получил ва2:D

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

        Возьмем квадрат 1 на 1, сдвинем верхние две точки далеко-далеко (на D) вверх, нижние две точки далеко-далеко вниз. После этого, не сдвигая какую-то точку, получить что-то лучше квадрата со стороной 2D (и макс. путем 2*D-1) вроде не получится. Если же сдвинуть их обратно к центру, то это дает макс.путь D.

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

    Перебираем точку, которая останется на своем месте

    Это неверно. Возьмём большой квадрат, сдвинем каждую точку на 1 "свастикой".

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

Простите, может быть кто знает, какой контр-пример на тест 5 в DIV1 B или DIV2 D?

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

why this hack failed? (Div2A)

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

What's wrong with Div2 D's TL? I just spend 30mins to debug. So desperate to optimize some loop and vector's push_back, AND IT PASSED PRETEST!!! It sucks.

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

Very hard to read problem statement. I could solve problem A if problem statements were a bit more readable...

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

It's been so long without a contest I forgot what it feels like...it feels good. I hope everyone has done good.

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

Geometry kills me in contests. I gotta get better at it.

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

:3 :3

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

How to solve Div2 D / Div1 C ?

None of my ideas ended up fast enough

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

Python module "itertools" rocks in Div2E. Hope I won't get TLE or some disgusting WA case I didn't notice. Edit: Oops, actually, there is such a case:

1
0 0
0 3
3 2
3 5

My answer:

2
0 0
0 3
3 0
3 3

Right answer:

1
0 1
0 4
3 1
3 4

And it isn't covered by pretests...

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

What is the solution for Div2 B? I sorted and took minimum of absolute of ( Prefix_i * 2 — sum + 1) .

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

when will the sytests start ?

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

DIV 2 D(World Tour) involves finding strongly connected components along with topological sorting like tarjan's algorithm right? I just got there but couldn't figure out how to proceed further. Any ideas?

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

    Use bfs on all nodes to find All Pair Shortest Paths.

    Basically my idea is for each pair (b, c), find (a, d) such that (a, b, c, d) are distinct and d(a, b) is maximal and d(c, d) is maximal. (use set or something similar for that)

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

Please don't start system testing 1 hour later like the last contest!!

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

Hello, my name is Alexander, and I like to write things like this (sorry for quality):

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

In Problem C Div2 ... I just want to know what is the importance of this sentence "The only restriction — it is not allowed to append the same string twice in a row."

for example if I have "xxxxxabab" I cant put ab in the output as I can do like that --> "xxxxxab" — "ab"

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

How to solve div1D? I thought at brute force fixing the direction(OX or OY) and the order othe vertices in the square. After this we get a system of equations but the problem is that it's not uniquely determined. Still, I am pretty sure that we can have at most one free element(the others depend on it), and I guess that now, iterating this free elements throught the integer values that he can take, we get a convex function, so we can ternary search. Unfortunately I am not able to prove the convex function part and there is one more problem with the integer restriction because I'm not that sure that for any fixed integer value we get all the values integer, so the function won't be defined on Z so it doesn't work anymore. Can someone who thinks he solved it tell me how?

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

    The editorial will be posted today or tomorrow.

    As a writer of this problem, I'm also very interested in a solution with binary search.

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

    If you know which vertex is, say, the top left one, the direction it will go and an upper bound on the time it has, you also know the segments of possible coordinates for top and left sides of the square. Intersect these segments using the information from all points. Now you can find out the segment of possible values for horizontal and vertical dimensions of the square. These two segments must have a common positive element.

    So, brute force the permutation, brute force the directions, binary search on the time (which is unnecessary but makes things easier) and intersect some segments.

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

      It seems nice and I'm sure in this way it can be done. Still, I don't actually understand what do you intersect. After brute forcing that stuff(I also did this thing) and binary searching the maximum change, you get some segments, knowing that on the first segment the upper left vertice can be found, on the second the upper right, and so on. But How do you actully deal with the remaining problem? It seems possible, but I can't see how. Can you please explain me more thoroughly?

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

    Wrong solution was here before;)

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

    17578532

    Run the following solution once, swap coordinates, run it once again.

    Create sets X and Y where X denotes a set of x-coordinates from the input. Iterate over that x1 < x2. Iterate over . Assume that we already have coordinates of 3 sides and run a function check_sq(x1, x2, y, y + |x1 - x2|) and also check_sq(x1, x2, y, y - |x1 - x2|). This function should check 4! possibilities of assigning input points to 4 points (x1, y1), (x1, y2), (x2, y1), (x2, y2). Check my code for implementation details. Also, it's possible that we know only x1 and x2, without knowing any y value, e.g. for test:

    5 0
    10 0
    5 100
    10 100
    

    We know x1, x2. Let f(y) denote a function that returns the answer for check_sq(x1, x2, y, y + |x1 - x2|. This function is maximum over 4 functions of form |y - const| so it's also strictly bitonic (it has form const1 + const2·|y - const3|). So, we can ternary search the optimal y, checking the value with already created function check_sq().

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

Можно ли было решить div.2 D, перебирая вторую и третью точки пути, а для двух оставшихся за O(1) получать остальные точки — с самым длинным расстоянием от второй (здесь расстояние считается в обратную сторону) и третьей? Для каждой пары второй и третьей точки свой ответ = максимальная длина общего пути, из которых затем выбирается лучший.

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

    Нет, нужно было перебрать среди троих самых удалённых точек.

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

      Хм.. у меня решение "перебор пары {вторая, третья} + перебор {первая, четвертая} среди двух самых дальних от средних" зашло 17585167, 4 секунды, правда. Это не то, что ожидал автор?

      перебрать среди троих самых удалённых точек

      Что именно имеется ввиду? Перебрать от одной вершины три самых удаленных точки? Самую удаленную от первой, затем самую удаленную от самой удаленной от первой? Если так, то не понимаю, почему это должно работать.

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

        среди двух самых дальних от средних

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

        В виду имелось перебрать две средние, а в качестве крайних — комбинацию из одной из трёх самых дальних по обратным ребрам от второй и одной из трёх самых дальних от третьей.

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

          Все-таки, не понимаю, почему может быть недостаточно рассматривать одну из двух самых дальних от второй и одну из двух самых дальних от третьей. Если найдете такой тест, напишите, пожалуйста.

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

            В две самые дальние от второй может попасть третья?

            Если да, то моё решение, которое перебирало только две падало на 17, 18 и 41 тестах.

            41 тест (добавлен из взломов):

            4 6
            1 2
            1 3
            1 4
            2 3
            3 4
            4 2

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

              Теперь понял, спасибо за разъяснение!
              Мое решение по именно такой причине валится на тесте:
              4 6
              1 4
              2 4
              3 4
              4 1
              4 2
              4 3

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

    только нужно было перебрать несколько 1х и 4х вершин, ибо самые далекие могут попасть под ограничение, что все 4 вершины, должны быть разные.

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

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

      Т.е. получались следующие пары 1х и 4х:
      самая дальняя(не равная 2,3) 1 — самая дальняя 4 (не равная 1,2,3)
      вторая по дальности(не равная 2,3) 1 — самая дальняя 4 (не равная 1,2,3)
      самая дальняя(не равная 2,3) 4 — самая дальняя 1 (не равная 4,2,3)
      вторая по дальности(не равная 2,3) 4 — самая дальняя 1 (не равная 4,2,3)

      Есть контрпример, когда этого не достаточно?

      upd: умудрился не там присвоить признак посещённости при поиске в ширину. Больше не нужен контрпример :)

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

I am not good at English so i don't understand div2 E Also, i spend too much time to understand div2 D

I think i should study English Hard T.T

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

Waiting system test is like waiting prison break season 5.

you know the end will be shit , but you still waiting -.- .

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

В процессе решения Div2-C показалось, что задача NP-полная.

Убил на неё кучу времени, только потом понял, что неправильно понял условие и на самом деле задача очень простая :(

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

    It's easy. see this: 17584300

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

    Dynamic programming from right to the left, storing True or False for every suffix of length 2 or 3 (can this sequence be a suffix or not).

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

      Can you provide a code? I was thinking about that but I didn't know how to code it

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

        You can see my submission here, but I suspect you don't understand Python (here is the information about slices and indexing in the string), here are some comments:

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

Есть ли контр-тест на следующее решение C из Div. 2?

Заводим два булевских массива ok2[len(s)] и ok3[len(s)], где значение по индексу i означает, допустим ли суффикс соответствующей длины с концом в i. Полагаем, что мы всегда можем построить суффиксы в конце строки (т.е. ok2[len(s)] = ok3[len(s)] = true); дополнительно считаем, что ok2[i] = true, если ok3[i + 3] = true (то есть, после этого суффикса может стоять суффикс длины 3) или s[i - 1, i] ≠ s[i + 1, i + 2] (аналогично для ok3). Пробегаем по всем индексам с конца и записываем все допустимые суффиксы в set, пока не окажется так, что при добавлении любого суффикса корень окажется меньше допустимой длины.

Как-то так: 17579695. UPD: приехали тесты от жюри, понял, что нужно было проверять допустимость суффиксов обеих длин после проверяемого :(

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

Hey, My code fails in sys test 42.. but it gives the correct answer on my system. I have even handled the case it fails on, in my code. Can anyone pinpoint the issue ? Solution link:

http://mirror.codeforces.com/contest/667/submission/17577331

Sorry for the mix up, I took jury's o/p as participant's o/p..

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

For div1c, I derived the mathematical formula which runs in 100000 * 100000 — and used some tricks to prune the runtime for half. I was very nervous since I thought it might fail. but happily, it passed systest (in only 2.4s)!

Am I the only one who used pruning?

http://mirror.codeforces.com/contest/666/submission/17577445

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

Can someone please tell me what is wrong with my answer?

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

Div2 B: Try this test: 30 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 => Everyone have different result? @.@

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

У жюри точно правильный ответ на div.2 C?
abcdeabzzzzzzzz

Какое слово можно составить, например, с суффиксом ab?

upd: Отличная получилась задача (как и D). Спасибо :)

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

UDP: Sorry, I have found the ans.

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

Hacking case for div-2 C is aaxaxabbabbb. many solution with 1D dp failed at this case.

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

Can anyone tell me what went wrong? Solution A

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

In Div.2 C, I mistakenly thought a suffix sequence "aa" -> "aaa" -> "aa" is invalid. hahaha.

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

I tried to hack div2.Problem B.Coat of Anticubism of some users with test case

5 8 4 3 2 1

but it said invalid input, but why?

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

I used bisection to solve Div2A. Couldn't find an easier solution -_-

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

OK! it's now two contests in a row, getting WA on pretest 2, which is in the samples!!!! This is really getting embarrassing :(

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

Proof that in Div2B it is sufficient to make each side less than sum of others: Let the greatest side be of length d. Then split all other sides into two categories with nearly equal sum of lengths: let us add other sides in length decreasing order one by one into the category with smaller sum of lengths. Then in the end the sums will differ not by  ≤ d, with equality only in the trivial case when all sides are d. Then we can construct a triangle from d and concatenated sides from each of the categories, because all three triangle inequalities are satisfied.

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

Many solutions on Div2A would fail on the hack test by user sid02
hack test is: 2 5 3927 1250
correct answer is: 1710.545730564287
for example:
17576065 output is: 1575.38
17569724 output is: 1570.796000
17574966 output is: 1693.15
17570584 output is: 1570.8
17569909 output is: 1698.1582
17571073 output is: 1698.1581622
I was wondering why it wasn‘t added to the final system tests...

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

 20 тест. Почему прошло? http://mirror.codeforces.com/contest/667/submission/17569724 UPD. Понял, относительная погрешность < 1e-4

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

how is NrootNlogM complexity passing for E in 2 seconds. its way more than 10^9 operations.

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

When will the editorial be posted?

BTW how to solve div2/C ?

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

Can someone help me in finding out why this gives WA for Div2 D ?
Thanks!

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

There is one thing I would like to officially complain about. I didn't carefully read the statement of the task A and forgot to print YES before printing the result. I wouldn't mind subtracting points for an incorrect submission, but if the same thing happened to somebody who prints incorrect version of NO, like

NO

0

there will be no punish, because that would be caught by the first test and this is not counted as incorrect submission. This way people who are lucky to get WA on the first test case, will get away with it.

Hence I kindly ask to change this rule: either count each incorrect submission or don't count incorrect submissions on all the tests from the task statement. Otherwise the order of tests influences your final score, and that factor shouldn't be taken into account at all.

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

In my solution (Problem D), my code is giving runtime error, but, when I comment line 121 (resp[0]=a) not gives? someone understand why it happen?

runtime

not runtime

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

Editorial??

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

Думаю, стоит написать top-5 из каждого дивизиона.

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

What is the answer for this case in Div.2B?

4

1 2 3 4

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

Why is there still no editorial in English? Is an English editorial going to be published at all? BTW, I think you should organize more rounds, the problems from this round that I managed to solve during and after the contest are awesome! :)