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

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

Всем привет!

Совсем скоро, 12 января в 19:30 MSK состоится Codeforces Round #223, автором которого являюсь я. Это мой десятый раунд на Codeforces и я надеюсь, что не последний.

Спасибо Геральду Агапову (Gerald) за помощь в подготовке раунда и Марии Беловой (Delinur) за перевод условий на английский.

Настоятельно рекомендую прочитать условия ВСЕХ задач.

Это первый раунд в этом году. Кстати, в прошлом году первый раунд для двух дивизионов тоже был мой(а по статистике +1/-1, оказался самым крутым из тех, что я давал). Надеюсь, что в этот раз задачи окажутся еще более интересными для Вас. Получится ли? Узнаем после окончания раунда :)

Gl & hf ! :)

Разбалловка в обоих дивизионах стандартная.

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

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

Sereja, You are savior man, You keep creating good problems regularly :)

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

Yess! Another Sereja's Round!

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

9 января в 19:30 MSK

Получится ли? Узнаем после окончания раунда :)

Ну как прошло?

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

В записи указано 9 января... Чем-то напиминает вечеринку Стивена Хокинга для путешественников во времени.

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

First Contest of 2014 :) Wish everyone a happy and successful year.. And High rating too :)

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

Hope it a year, with success, more contests, and faster system test.

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

According to your first problem in 2014(Sereja and Graph in CodeChef), it is obvious that this contest will be very interesting! :)

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

Happy new year to all with this contests.

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

Sereja u forgot to thank MikeMirzayanov for creating Codeforces. :)

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

А я каждый твой контест наивно читаю условия ВСЕХ задач, но мне что то не очень это помогает(

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

Sereja's problems are actually cool( although I only met 2 of them on CodeChef ).I can't wait to see how many AC submissions will fail on "Sereja and graphs" at the end . May it be a great round!

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

A Happy New Year to all, and good luck on the first contest of 2014!

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

It seems great! This is my first join in the contest of Codeforces Round, I hope I can get good marks~ :>

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

1st round of 2014, a little late start i think.

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

Good lucky to everyone!~~

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

Как только у меня экзамен, модуль/кр, так за день до этого Sereja даёт свой контест((

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

Really nice New Year's first contest!Good luck to everyone!

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

In reply to this: http://codeforces.me/blog/entry/10138#comment-155733 Keep in mind that this will be a historic round, because today for the first time I'll become a yellowcoder from a redcoder :P. But I will try to keep this color :D.

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

Pretty tight pretests. It seems comparatively there will less hacking this time.

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

Pretty tight pretests. It seems there will be comparatively less hacking this time.

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

Как решать С?

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

    Заранее посчитаем для каждой позиции "баланс" (количество "(" левее этой позиции минус количество ")" левее этой позиции). Ответ на отрезке однозначно определяется балансом в начале, балансом в конце, минимальным балансом на отрезке, UPD: и длиной отрезка.

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

    Алгоритмом со стеком найдем для каждой закрывающейся скобки на позиции right парную открывающуюся скобку на позиции left и заполним массив a[left] := right. Теперь в этом массиве нужно отвечать на запросы "на отрезке [L, R] найти количество чисел, меньших R". Это делается деревом отрезков — в каждой вершине нужно хранить все числа на соответствующем отрезке, а при запросе бинарным поиском искать количество нужных чисел.

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

      Жесть. Я свёл к этой же задаче. Только решил попроще scan-line + fenwick tree.

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

      А как это все работает на примере "(())"?

      a[1] всегда пустое, так как открывающаяся скобка на позиции 2 всегда ближайшая? Тогда как посчитается ответ для l=1, r=4?

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

        Извиняюсь — я наврал в объяснении. В решении у меня написан стек, а тут написал неправильную жадность:)

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

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

          Да ёлки-палки, все поняли, что для закрывающейся открывающуюся. Речь идёт о том, что ближайшую ещё не использованную надо находить, иначе ты для 3 найдёшь 2 и для 4 найдёшь тоже 2.

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

      Можно a[right] = left, и тогда ответ на отрезке [L;R] это количество чисел больших L среди всех, которые левее R. А это равно количеству всех закрывающих скобок левее R минус количество чисел на [0;R] меньших L, т.к. если закрывающая скобка лежит левее L то её пара точно левее. Таким образом надо просто уметь считать сумму на префиксе.

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

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

      Например, для строки "(())" получится массив [undefined, 4, undefined, undefined] и ответ 1, если следовать описанному алгоритму. А вот если разбивать скобки на пары обычным алгоритмом со стеком, то получится правильное решение.

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

    А я sparse table написал.

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

    У меня такое решение: Для каждой открывающей скобочки найдем следующую за ней закрывающую, пронумеровав их c 1 (обозначим за f(id)). Теперь отвечаем на запрос. Пусть самая левая после L '(' имеет номер s (среди открывающих), самая правая ')' — t (среди закрывающих). Тогда, запустив бинпоиск по ответу, мы проверяем, что существует скобочная последовательность размера X таким образом: f(s) <= t — X + 1 && f(s + 1) <= t — X + 2) && ... (так как всегда нужно брать первые X открывающих и последние X закрывающих). Это запрос на отрезке [s..s+X): (max по i = [0..S) (f(s + i) — i) ) + s <= t — X + 1.

    P.s. Ну и разбалловка...

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

nice contest! thank you Sereja

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

only 10 successful hacks, of which 7 were on the comparatively difficult problem E.

Sereja, from next time plz try to make hacking more possible, as it is also an important part of contests.

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

У меня одного решение Div. 1 A на O(nlog2(n)) вышло? =)

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

A contest where faulty point distribution can break one's day, C was solved by 3 times more people than B. Interesting set though.

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

Forgot to delete cerr... Got AC in almost the same code in problem C. I'm going to lose a lot of ratings...

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

superb speed of system testing today! i think MikeMirzayanov's New Year resolution was to install better testing computers! :D

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

Спасибо за раунд и отличные задачи!
P.S. Надеюсь поменять цвет :)

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

NlogN solution for C. Time limit in test case 13 ... , i lost lots of rating points cause of my slow nlogn solution ... pfffff

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

What does this mean? wrong answer Unexpected EOF in the participants output

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

Why was E E? OwO

btw very fast system test :)

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

3 unsuccessful hacks :(

how this code passed test 14 for div2B?

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

Привет, див1)

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

Thanks a lot Sereja for another awesome round! :D

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

I have a problem. I cant'n see the solutions of other participants, neither test cases or hack somebody solution. Because the solution of someone else appears not in other web page, else in the same page, but this not work for me. Mi web browser is Firefox. Even for write this comment I had to use Internet Explorer. What I need to configure in Firefox for that works?

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

So easy!