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

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

Привет всем!

Рад приветствовать вас на очередном, 94, раунде Codeforces. Надеюсь, что несколько более раннее время проведения раунда не скажется отрицательно на ваших успехах =)

Автором задач сегодняшнего раунда являюсь я, выпускник СПбГУ, Валерий Самойлов. Это мой второй раунд на Codeforces. Надеюсь, что сегодня никто не пожалеет о своём участии. Большое спасибо RAD, который оказал неоценимую помощь при подготовке задач. Также спасибо Марии Беловой, переведшей условия на английский язык.

В этом раунде будет необычная разбалловка:

Див-1: 1000 - 1500 - 1500 - 2000 - 2500

Див-2: 500 - 1000 - 2000 - 2500 - 2500

Прошу не пугаться, все не так уж страшно =)


Раунд завершен, всем спасибо за участие!

Разбор ожидается завтра.

Победители:

Дивизион 1:

1. Egor

2. Gassa

3. dzhulgakov

4. Zhukov_Dmitry

5. tourist

6. tomek

7. LayCurse

8. a9108

9. Sereja

10. ftiasch

Дивизион 2

1. stx2

2. lovro

3. exod40
  • Проголосовать: нравится
  • +160
  • Проголосовать: не нравится

15 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится
Всем удачи, а автору заранее спасибо за задачи =)
15 лет назад, скрыть # |
 
Проголосовать: нравится -56 Проголосовать: не нравится
Ну за что? Ну почему? Контест в 10:00 по москве, а как писать людям в Ебурге, Уфе... у меня вообще школа...
15 лет назад, скрыть # |
 
Проголосовать: нравится +27 Проголосовать: не нравится
Ну ладно! От ненаписанного контеста никто не умирал(надеюсь)! Всем удачи! Желаю всем хорошего коденья вместе с завтраком и утренним кофе...
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Надеюсь проблемы не будет во время контеста!
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Я в колледж не пошел ради контеста=). Всем удачи!
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Интересно, а разбалловка стандартная?
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +20 Проголосовать: не нравится

It's a comfortable time for me, 2PM in China.

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Looking forward~~~~~~~~
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Зомби открыл галаза.... Уф... проснулся... Полчаса на включение мозга... :)

Всем удачи на предстоящем контесте :)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
That's all right.
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Всем удачи решенных задач и высокого рейтинга

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

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

И всем удачи на контесте=) 

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Эм.... Я вообще регистрировался ещё вчера, после чего был здоровый сон на часов этак 8, т.е. возможности зарегаться было больше чем достаточно на мой взгляд :)
    Yt
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +16 Проголосовать: не нравится

Последние изменения: добалено запостивание в ВК, FB, Twitter и LJ; убрана кнопка оставить комментарий внизу страницы; добавлена сортировка по рейтингу среди зарегестрировавшихся на контест! Классно... вроде немного, а чувствуется, что что-то делается, причём делаются приятные вещи.

UPD. Странно, что совсем новички имеют рейтинг 0, вроде бы он 1500?

15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
comfortable 100% 7AM :)
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +13 Проголосовать: не нравится

Delayed 10 minutes?!

I have college after it ends with 30 minutes, now it become 20 minutes :\ Hope I could make it on time!

15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
О, перенос на 10 минут. Спасибо большое! Мне как раз их не хватало для удобства) А то в 5 минут пара заканчивается только))
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
эх, десятинка... =)
15 лет назад, скрыть # |
 
Проголосовать: нравится +32 Проголосовать: не нравится
4AM in Brazil. Not so comfortable.. but here we are! :D
15 лет назад, скрыть # |
 
Проголосовать: нравится +34 Проголосовать: не нравится
6AM here. You are teaching me to live a more healthy life.
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Возможно сегодня учистников в рейтинге станет 10000!
15 лет назад, скрыть # |
 
Проголосовать: нравится +13 Проголосовать: не нравится
It is 9:30 AM in Iran. But it's interesting that today is holiday :)
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится -38 Проголосовать: не нравится

Зачем такие сильные претесты в Div1A (Div2C)?
Совсем с ума посходили что ли? Что хакать то тем, у кого с утра ничего не придумывается? %)

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

чорт... нашел кривое решение и не успел сделать взлом =_=

upd. хм... оно прошло все тесты. но, тем не менее, оно валится.

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

Very nice problems!

15 лет назад, скрыть # |
 
Проголосовать: нравится -10 Проголосовать: не нравится
Nice problem set.
My mind is fully shaken. :)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Вам не кажется, что взломов маловато сделано?
15 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится
По моему D и С в разы проще чем B. =)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А как В решалась? 
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      Попробую написать чтобы было понятно:

      Построим суфф. масс. с LCP. Это можно сделать за время N lg N. После чего заведем 2 указателя и текущую длинну подстроки. Первый - указывает на подстроку с наименьшим суффиксом из тех что ещё не рассмотрены полностью. Второй - текущий рассматриваемый суффикс. Тогда возможны следующие переходы:

      1) LCP >= Len, тогда у нас есть ещё 1 такая подстрока и можно уменьшить k и рассмотреть следующий суффикс.

      2) LCP < Len. Значит следующий суффикс начинается с подстроки большей чем мы рассматриваем, поэтому начнем рассматривать строки длины Len+1 начиная с beg

      3) Суффикс короче чем Len. Тогда очевидно, что и все суффиксы что и раньше его уже рассмотрены и тогда можно подвинуть beg и len положить равным LCP + 1 (в силу того что это минимальная из нерассмотренных подстрок).

      Эта часть делается за O(N+K). Ну и ещё вначале проверяем чтобы решение существовало. Итого за O(N Lg N + K) решили задачу.

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

      у меня такое решение

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

      теперь само решение: пусть у нас есть куча с минимумом (грубо говоря set в C++). сначала сложим туда все подстроки длины 1 (причем подстроки мы храним как 2 индекса - начало и конец). далее выполняем k раз операцию: извлекаем минимум из кучи. если то, что мы извлекли (скажем, [i..j]) - не суффикс нашей строки, то ложим в кучу [i..j+1].

      нетрудно понять, что мы извлекаем из кучи все подстроки в лексикографическом порядке, значит на k-й раз мы вытащим ответ. размер кучи всегда не больше n, значит решение работает за O((n+k)*logn*logn) (первый logn - это для кучи, второй для сравнения подстрок).

      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +3 Проголосовать: не нравится
        Я в контесте не участвовал, но задачу решил в точности также. Странно, но проходят решения без хеша, то есть то тоже самое, но с сравнением строк за O(n). На макс тесте abbbb....abbbbbb... где вторая "a" стоит посередине, такое решение будет работать n^2. тесты слабоваты против такого, казалось бы очевидного решения. Надеюсь такое читерство ни у кого не прошло.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +1 Проголосовать: не нравится
      Можно просто наращивать строку, которую ищем в тексте, увеличивая ее длину и запоминая все начала ее вхождений. Простой рекурсивный спуск с перебором, какую букву поставить на последнее место. Сложность - 26*k, поскольку все вхождения строк учитываются.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    В B нет необходимости писать что-то суффиксное. Тот факт, что k<=10^5 добавляет очень простое решение.
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Very nice problem set... Just 20 seconds more and would have submitted E as well. Took me a whole while to realize answer is simply (n - 1) choose (2 * k) * (m - 1) choose (2 * k)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Все-таки правильно я сделал, что получив WA4 по задаче Е подумал, что ну ее на фиг, и пошел делать взломы
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +12 Проголосовать: не нравится
    Да ну тебя - мы надеялись, что её хоть кто-нибудь сдаст.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Ну я понятия не имею, как в этом багу искать. Теоретически решение совсем простое, а вот нахождение прямой, которая пересекает как можно больше кругов - та еще развлекуха. Дали бы n = 100, если бы хотели, чтобы кто-нибудь точно решил
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Так в этом-то вся и задача! Всё остальное не тянет на Е. А ты точно искал или итерационно?
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Я понял, где у меня бага - я просто совершенно другую функцию считал :)
          Я искал точно - поворачиваем направление, смотрим, какие правые концы проекций перестали лежать в каких кругах. Я, правда, полный бред в итоге там искал - но это просто спать надо было больше.
          А насчет "это тогда не Е" - так весь контест состоял из 4х С и этой задачи ;)
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Было бы логично, если бы и она была С, ты про это?
            Ну нет, всё-таки А была никак не выше, чем В.
            Напиши с правыми концами и ищи следующую багу =) Или я неправильно понял, какие проекции и где их правые концы.
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится 0 Проголосовать: не нравится
              Я про то, что все остальные задачи по сложности - С. Не важно
              Решение такое - спроецируем все круги вдоль случайного направления. Найдем для каждого правого конца в скольких кругах он строго лежит. Теперь будем вращать направление вплоть до следующей касательной (мы запоминаем все направления, которые соответствуют касательным к любым 2 кругам, причем для одного из кругов это должна быть "правая" касательная, а при сортировке мы сначала кладем "выходы", а потом - "входы") и вычитаем из соответствующего правого конца, если выход и добавляем, если вход. Ну и максимум ищем.
              • 15 лет назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится
                То есть, исследуются моменты, когда один круг входит в другой или выходит из него.
                Интересное решение. Авторское другое и, кажется, несколько проще.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      А какая в E правильная формула, если мы знаем C (количество кругов, пересекаемых одной прямой)?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Чёрт, я вывел ответ с %lld... :(
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Похоже на то ;) .

    Хотя... в E у tomek, dolphinigle и Endagorion один и тот же ответ с WA на тесте 13, теоретически может оказаться, что правы они, а не жюри. Тест маленький, скоро узнаем ;) .
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +15 Проголосовать: не нравится
      Не надейтесь, у жюри всё правильно ))
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Да, жюри имеет обыкновение так думать.
        Иногда оказывается, что зря =) .

        Ты можешь на пальцах доказать свой ответ на тесте 13?
        Или, скажем, уменьшить k на нём в 10 000 раз и доказать?
        Или объяснить, на что этот тест?
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится +12 Проголосовать: не нравится
          Да я только что проверил на калькуляторе.
          Этот тест на то, что прямая может проходить через три круга только чуть-чуть, едва-едва. Ваши решения, видимо, сочли, что она не проходит вовсе. Да нарисуй эти три круга и все станет ясно.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Да, возможно: в этих трёх решениях в разных местах eps = 1E-10, 1E-9, 1E-9. А сколько надо для таких ограничений на координаты?

            С другой стороны, на этом тесте даже 1E-6 должно было хватать.
        • 15 лет назад, скрыть # ^ |
          ← Rev. 4  
          Проголосовать: нравится 0 Проголосовать: не нравится

          Судя по тому, что у e-maxx теперь ОК - я верю в правильность результатов :)

    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      С другой стороны, 13й тест явно не последний. Посмотрим. А по D явно можно было очков набрать - так что я сыграл safe
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +15 Проголосовать: не нравится

A good point of the contest was brief problem statements.

15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
I really need to learn that suffix-array thing. n^2*logn didn't play well with n=10^5 :-)
15 лет назад, скрыть # |
← Rev. 3  
Проголосовать: нравится +5 Проголосовать: не нравится

Any ideas in problem D?
My approach is greedy. First, create a circle min, min+1, min+2,...,max,max-1,max-2...,min+1. Then check if it's possible to pair the rest numbers such that every pair consists of consecutive numbers since these pairs can be consistently added into the initial circle.

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

    I liked this problem enough to write a blog post about it: http://codeforces.me/blog/entry/3196. It has a "proof" for a greedy solution similar to what you describe. Hope you find it useful!

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Look at the histograms.  For a circle "min, min+1, min+2,...,max,max-1,max-2...,min+1", the histogram is 1 2 2.... 2 2 1.

    There's a solution if the histogram is a sum of histograms of overlapping circles.

    You can modify the circles greedily until each one is empty:  Pick one the circles on the left side.  Remove two pieces of the circle so that the min value is increased by one.  In the histogram, it means removing 1 to the two leftmost bins.  That's implemented in this solution .
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    My gredy solution works as follows:

    let a1, a2 be the value of the biggest and second biggest value (without duplicates). Let c1, c2 be their associated counts. If c2 >= 2 we can "merge" an a1 with two a2s creating a segment: a2, a1, a2. This can now be seen as one a2, so we decrease c1 and c2 by one.

    The base case is when a2 is is also the smallest value (only two values). In this case c1 must be equal to c2.

    At all points we must have a1 - a2 = 1.

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Very nice problem set. :)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
А почему пользователь ZKirill участвовал вне конкурса?
Или его участие было вызванно ошибкими авторизации?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

В задаче  D  слабые тесты. Проходит решение которое выдает YES на тест:

6
2 2 3 3 3 3 

Я из-за этого сделал ре-сабмит, но оказывается что мог не делать

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

А в D - почему неправильно делать так: брать минимум и максимум, удалять их, и говорить, что мы сейчас сделаем из них цикл, поэтому все числа между ними мы удаляем по два раза. И всё это завернуть в while (есть хотя бы одно число).

Т.е. мы так находим несколько циклов, которые можно склеить в один большой цикл - ответ.

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +20 Проголосовать: не нравится
    Это я тебя свалил, если ты не заметил
    Тест был такой:
    16
    1 2 2 2 3 3 3 4 4 5 5 5 6 6 6 7
    После первого удаления оставшиеся куски не обязаны быть связными
15 лет назад, скрыть # |
← Rev. 4  
Проголосовать: нравится +1 Проголосовать: не нравится

The Div 2 D.string
I use STL heap.

This is my code,it got TLE

if (P.top().pos<=len) P.push(Node(P.top().pos+1,P.top().s+S[P.top().pos]));



If turn to this can AC

Node tmp=P.top();
if (tmp.pos<=len) tmp.s+=S[tmp.pos++],P.push(tmp);


it really have big difference?
Is construct function make it slow,or access top(),or else?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
can anyone explain solution of "String" using suffix array? I solved it with suffix automata, but have no idean about array. Thx in advance


// лучше по-русски
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Это первый контест, который я писал на работе, и если бы не отвлекали... :)

15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Can someone explain the solution for Problem C (Div 1) in detail?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится
    First, note that the two dimensions are independent, so we can reduce this to a 1-dimensional problem. So we start with some value n and want to pick k intervals each of which is strictly contained in the previous one. The number of ways to do this is just C(n - 2, 2k) because for any choice of 2k values in the range [1, n - 1] we can take the min/max to be the first interval, next min/max to be the second interval, and so on.
    • 15 лет назад, скрыть # ^ |
      ← Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится

      I still don't understand your explanation, can you make it more clearly? First, why the two dimensions are independent. Second, why is C(n-2,2k), where comes the 2k?


      By the way, your rating diagram is really fantasitc!
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +5 Проголосовать: не нравится
        Sure. We can think of them as independent due to the following argument. Let's say we have two sequences, one for each dimension, e.g.

        [0, n], [1, n - 1], ...
        [0, m], [2, m - 1], ...

        which represent the left/right bounds and top/bottom bounds of the box at each of the k steps, respectively. So the first box is obviously (0, 0) to (n, m) and the second is (1, 2) to (n - 1, m - 1). We observe that for any two sequences of the left/right bounds and top/bottom bounds we get exactly one sequence of boxes. It suffices then to count the number of such sequences and multiply them together.

        To count the sequences, we look at just one of the sequences above, e.g. [0, n], [1, n - 1], [3, n - 2], ... and rewrite it "in order" like this: 0, 1, 3, ..., n - 2, n - 1, n. We know that 0 is always at the start and n is always at the end and there are exactly 2k values from 1 to n - 1 (two for each of the k intervals). Moreover, for any 2k values in [1, n - 1] we can uniquely construct the k intervals by taking the outermost values to be the first interval, then the next outermost to be the second, etc. For example: 0, 3, 4, ..., n - 3, n - 2, n becomes [0, n], [3, n - 2], [4, n - 3], ....

        Thus we have a one-to-one correspondence between such sequences and sets of 2k values in the interval [1, n - 1] of which there are C(n - 2, 2k).
    • 8 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      There's just a slight mistake in your formula. It is supposed to be C(n - 1, 2k) since there are n - 1 different values in the interval [1, n - 1].

15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Я единственный не прочитал в условие задачи C, что следующий прямоугольник вписывается в предыдущий, а не в изначальный? 
  • 15 лет назад, скрыть # ^ |
    ← Rev. 4  
    Проголосовать: нравится 0 Проголосовать: не нравится

    Наверно, единственный.

    UPD. Нет, судя по плюсам и ответу, не единственный)

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Я сначала тоже не так прочитала, но задача получалась слишком сложной, пришлось поднапрячься и все-таки осилить условие.

    Но я и в A не прочитала с первого раза, что Маша умеет по диагонали ходить.

    А что делать, ранний контест, 10 утра %)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Я прочитал так. Забил, написал D. Потом двумя способами написал B. В итоге вернулся и с третьей попытки прочитал условие правильно.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +7 Проголосовать: не нравится
    Я тоже не так прочитал. После того как я понял что та задача над которой я думал скорее всего не решается на таких ограничениях я решил перечитать условие)) Я ещё умудрился не заметить в D что числа по кругу((
15 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится
It was a standard problem set. Nice. Waiting for editorials. Thank you
15 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Tourist's solution on div1 problem A?


He wrote a non-recursive solution on this problem?

Can somebody explain the algorithm?


  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Apparently he is checking where M can be after several moves.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    You can use DP with state x, y, #moves.

    You win iff you can survive 8 moves.

    Then for each mem[x][y][cmove] you need to check if there's a rock in the cmove places above (it would move on you, so you die) or if there's a rock cmove-1 places above (it would be there when you tried to move, so invalid move).

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Obviously, it's not necessary to check whether you can reach Ann, the only thing to do is to check is any state reachable after 8 moves as all statues disappear after 8 moves.
    So, you can calculate isreachable(step, x, y) the following way: if now we are at step S and in point (x, y)  your simply check if the point (x + dx[i], y + dy[i]) is free of statues and no statue will move there after this step ( can be calculated in O(1). After all, if any isreachable(8, i, j) is true, you win, otherwise you lose.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
How can I download a complete test case? I need to know what is test case 50 in problem B DIV1.
15 лет назад, скрыть # |
 
Проголосовать: нравится +18 Проголосовать: не нравится
Can anybody tell me how to solve the problem E in div 1?

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

    If there were only one banana, then the answer would be 1 + K * (K+1) / 2  (it's easy to construct such a placement of lines, where each line intersects all previous, and all intersection points are different).

    Now suppose we have several bananas.

    If there is a line that intersects all bananas (intersects, but not touches), then the answer is 1 + K * (K+1) / 2 + (K + 1) * (N - 1). This formula means that we take an answer for one banana, and we cut all the remaining bananas by K lines into K+1 parts (because all intersection points are situated in the first banana). Why is it optimal to put all intersection points into one banana? Because each intersection point adds +1 to answer, so we've already achieved theoretically maximum possible value.


    So, the problem is in reality the following: given N circles, determine, how many of them can be intersected using one line. I've solved it in O (N^2 log N) in the following manner: we suppose that the line touches one of the circles (we iterate over all N of them), so the position of the line can be described as polar angle. So any other circle can be described as an interval [angle1; angle2), where angle1 and angle 2 are the angles, when our line touches this circle. (We exclude the right end of the segment, because we don't want to find an answer, were a line touches several circles, but can't be made to intersect all of them.)

    So, the algorithm now is to find the point with maximum number of intervals covering it, which can be done in O (N log N).

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

when will the editorials come out.Waiting for it desperately.....
»
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
can anyone help me in finding the editorial of this contest 94..
»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Some hint for problem B Div 1 with suffix array. I am dead!

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

Some hint for Problem B Div 1 with Suffix Array? I am dead!