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

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

Привет, Codeforces!

14 февраля 2015 года в 19:30 MSK состоится раунд Codeforces #291 (Div. 2) для участников из второго дивизиона.

Это мой первый Codeforces раунд. Надеюсь, он вам понравится.

Большое спасибо Максиму Ахмедову (Zlobober), Василию Антонюку (Antoniuk) за помощь в подготовке задач, Марии Беловой (Delinur) за перевод условий на английский, Михаилу Мирзаянову (MikeMirzayanov) за платформы Codeforces и Polygon.

Удачи всем!

UPD: Распределение баллов по задачам будет таким — 500-1000-2000-2000-2500.

UPD: Разбор. Простите за задержку)

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

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

wish it will be the way to DIV 1 :-)

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

I hope your next round will be Div. 1 too :)

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

What a shame ! I have a flight on that time. I will miss that round. I hope not to be busy at next contest on codeforces . Contests make addicted :)

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

I want to be a Candidate Master...

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

That's why I have no girlfriend...

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

hope i will be blue today ...

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

sorry if you see that I shoudn't write like this..

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

А условия задач будут доступны только на английском языке?

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

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

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

      Вы правы. P.S Автор не русский, но да ладно.

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

        Живёт и учится в России* в следствии чего, наверняка, знает русский получше других языков. А так да, извини, я обратил внимание только на университет, а не на место рождения.

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

Why no div 1 I wanna become master:P

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

Have Any Problem Of Valentine's Day?

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

Today is the birthday of the first electronic general-purpose computer.
Happy Birthday ENIAC.
ENIAC

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

very interesting problem set, many thanks for not setting a valentines theme.. star wars theme was a pleasant surprise

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

UPD: Finally, +17:-3, including: 1 triple hack, 4 double hacks, 1 last minute hack.

Well done!

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

Hopeful of being a room winner for the first time :)

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

Riiiiiiiiidam

tanx

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

I got WA at #6 on problem C. Anyone knows what it is about?

I solved it using a trie.

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

I got WA at #6 on problem C. Anyone knows what it is about?

I solved the problem using a Trie.

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

Как решать С без хешей? А то один японец в моей комнате сломал поголовно всех, кроме сдавших ее на последних минутах.

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

    Я думал о каком нибудь Ахо-Корасике или Укконене, но придумать что с ними нормально сделать — не смог

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

    Я написал бор, не знаю упадет ли, но как мне кажется, вроде должен заходить.

    UPD: загоняем все строки исходные в бор, затем когда нужно получить ответ, нужно пройтись по бору dfs-ом, с параметрами (curNodeInTrie, curPositionInString, hadDif) как только нашли ответ сразу же вернем его.

    Погенерил тесты, вроде нормально, а вообще: сейчас систесты покажут =)

    UPD: бор зашел за 184 мс

    Code Here

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

      А можно поконкретней с бором?

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

        Я, например, решал так: записал весь вход в бор, потом для каждого примера шел по бору и записывал все существующие ответвления. Потом от каждого ответвления пытался найти окончание примера. В какой-то момент на контесте пришло понимание, почему это работает быстро(кажется, не медленнее, чем n*sqrt(n)), но сейчас опять забыл =(.

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

      Как именно в этой задаче можно использовать бор?

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

        У меня хорошое решение с бором + хэшами.

        В вершинке бора храним набор хэшей суффиксов тех строк, у которых есть данный префикс, потом перебираем совпадающий префикс (и, соответственно, двигаемся по бору), идём по всем рёбрам из текущей вершины кроме того, которое должно быть при добавлении строки запроса в бор, находим совпадающий хэш с хэшом суффикса строки запроса — YES, иначе продолжаем искать. Дошли до префикса длиной во всю строку — NO.

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

      написал тоже самое, забыл про условие, что различие в 1 букве нужно обязательно. :(

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

      Я тоже использовал бор, но не знаю: "пройдет ли финальные тетсы?". Вот код: 9848296.

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

      А почему это будет быстро работать?

      Мне казалось, что решение с бором будет работать за O(len2). Типа нам придется ответвиться от каждой буквы и пройти оставшуюся длину строки

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

        Чтобы была возможность ответвиться по букве на позиции х, нам нужно скормить бору строку, которая совпадает с запросом на префиксе длины х-1 и отличается в позиции х. Очевидно, что при заданном запросе одна строка словаря подходит не более чем для одного х.

        Поэтому возможных ветвлений будет порядка корня из суммарной длины. Для "длинных" строк из запросов — мы можем обойти весь бор, но таких строк будет немного (не больше корня, из-за ограничения на размер входных данных). Для "коротких" строк из запросов — на каждой ветке перебора мы можем зайти не дальше длины строки, а веток будет не больше корня; общее число операций будет не больше суммарной длины таких строк, умноженной на число веток.

        Таким образом получаем асимптотику L*sqrt(L), где L — размер инпута.

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

    Так он всё-таки искал коллизии? Меня он вроде бы взломал, потому что бинпоиск был кривой.

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

      Он использовал тест отсюда

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

        Спасибо, не знал про эту фишку. Но ведь тогда можно было написать хэш по какому-нибудь другому модулю порядка 2^64, а такое вряд ли ломается даже атакой дней рождения.

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

          Перемножить два числа порядка 2^64 — не самый простой код. Поэтому обычно и берут порядка 10^9. Можно даже несколько модулей таких.

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

            10^9 плохо, потому что как раз ломается атакой дней рождения (т.е. за O(sqrt(n)*log(n)), насколько я понимаю). Если брать несколько модулей, то есть способ разделаться с каждым по отдельности, а затем скомбинировать, но строка, скорее всего, получится слишком длинной. А в чём проблема с 2^64, long long же просто? Брать по модулю 10^16+3 после каждого умножения (в качестве основания пойдёт что-то трёхзначное).

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

              Проблема использования 10^16 + 3 проявится, если мы захотим по хешам на префиксах считать хеш для подстроки (описание на e-maxx).

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

                А в чём проблема, собственно? Все те же рассуждения переносятся с 2^64 на любой другой модуль. Просто с точки зрения кода чуть сложнее, т.к. в некоторых местах придётся вставлять A%=P или A=(A%P+P)%P.

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

                  Умножение по модулю 2^64 — естественно и быстро. А умножение по модулю 10^16+3 — как-то не очень. В куске, который по ссылке оформлен как i1 < i2 && h1 * p_pow[i2-i1] == h2 || i1 > i2 && h1 == h2 * p_pow[i1-i2], нам нужно умножить два больших числа по модулю третьего большого числа, что дает переполнение. Приходится что-нибудь придумывать — например, делать Russian peasant multiplication (проще говоря, бинарное умножение), но это + к количеству кода и времени работы.

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

                  Как же вы посчитаете "h1 * p_pow[i2-i1]" (из статьи) по модулю 10^16 + 3, где h1 и p_pow[i2-i1] — это числа от 0 до 10^16 + 2?

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

                  Ну тогда согласен, просто с этим не сталкивался и не заметил, что там нужно умножать на степень основания. В таком случае считать хэши по двум взаимно простым модулям порядка 10^9 по отдельности видится мне самым надёжным выходом.

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

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

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

How to solve A.Or what is test 8 for problem A.

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

What was the hack test on C?

Overflowing the length in a char array? (up to 6*10^5)

Just time outs?

WA with the same string as in dict?

I submitted a brute force that passed the large pretest (took some work) just to hack on C XD, thinking it was overflowing the char array, but everyone used cin >> string so nothing for me

Somehow no one hacked my solution (maybe not enough time)

EDIT: WHAT, my brute-force C passed systests...

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

Is in the problem E answer is polynomial of degree ~100?

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

Весь контест пытался понять. Что здесь не так? Просветите, пожалуйста. 9844828

P.S. Если нет доступа, задача C, WA6: http://paste.ubuntu.com/10225587/

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

How to solve B ?

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

Is solution of 514E - Darth Vader and Tree related to matrix multiplication?

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

How to solve B ?

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

Actually Hon solo in problem B was fun.Have you seen "that's my boy movie" :D i don't think you remember Hon solo if you have seen it.

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

Кажется, некорректное условие в задаче А: В условии не сказано о том, что длина числа должна быть неизменной, поэтому, по логике: 900 должно переходить в 009 = 9 (инвертируем первый, а так же последний, чтоб получился положительное) 999 должно так же переходить в 009 = 9 (инвертируем первые два, а последний не инвертируем чтоб получился положительное) Но, поговорив с другом после контеста, оказывается, что его код прошёл, т.к. он делал для случая, когда длина чисел остаётся неизменным. PS: ы, давно не заходил)

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

    Так ответ не должен начинаться с 0.Поэтому из 900 никак нельзя получить 009.

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

    Там ясно указано, что "Число не должно содержать ведущих нулей."

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

    Еще хз, прошел или нет, кстати

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

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

    // не видел ответы выше

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

    "Запись итогового числа не должна начинаться с нуля.", то есть запись числа после применения некоторого количества операций инверсии цифры не должна начинаться с 0, так что 999 не может перейти в 009. Запутаться можно, но условие корректно.

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

      нет, не корректно. "Запись итогового числа" — это именно число в целом, а не первая цифра. Т.е. читать "привести число к обычному виду". На то, что это относится к формату вывода, а не вычислениям, указывает и повторение этого условия в разделе "Выходные данные" — "Число не должно содержать ведущих нулей." (в ином случае это условие было бы лишним)

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

    Да, я ошибся, не правильно понял фразу "число не должно содержать ведущих нулей", думал что это эквивалентен "выводить ответ без ведущих нулей" ))

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

please help me problem C

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

    For each query string s with length L, there are 2L possible variants (i.e. replace each character by the other 2, and since you can do this only once, there are 2L such possibilities). You need an efficient data structure to check whether the variants are in one of N strings. I think using trie is sufficient enough.

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

    I use set in C++ to save n string in set S. After that, with string i in m string query, consider position j, we have string x = s and set x[j] = {'a','b','c' \ x[j] != s[j]}. You can find x in set S in O(log(N)). I think it ok because The total length of lines in the input doesn't exceed 6·10^5

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

    you make a robin-karp(hashing) all strings of the dictionary but with a different letter at each step ( if str[i]=='a' you get 'b' and 'c') and you insert this value in a hash at each step... and for queries you make a classic robin-karp at string Q and check if this value is in hash... You should double hashing for safety(two different bases and two different MOD)

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

    I'm not sure if it's correct solution, but you can try to do it with hashing. For each n strings, calculate their hashes without each single letter. Next, do the same with strings from query but this time if any hash of ith string existed before, then answer is "YES" otherwise answer is "NO". There might be some problems, when some strings are equal, but it's not that hard to deal with.

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

    let's define that: a is number of character 'a' b is number of character 'b' c is number of character 'c' we need to find out at least one element in this set: { [a — 1][b + 1][c], [a — 1][b][c + 1], [a][b — 1][c + 1], [a + 1][b — 1][c], [a + 1][b][c — 1], [a][b + 1][c — 1] } and compare them with string t to satisfied the condition! we should use map(or set) to save the input string with [a][b][c]. I think it could process in 3 seconds :D !

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

4 unrated handle spotted the top 5 in current standing! They're unpredictably good o.O

UPD: In final standing the number decreased become two and both of them are the top 2! Fast system testing by the way.

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

To solve problem C, Is "c++ STL set" just enough?

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

А что там в D? Я хотел написать бинарный поиск по длине отрезка использующий дерево отрезков чтобы подсчитать макс на отрезке.

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

    Да, я так и делала.

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

    Если написать это неаккуратно, то есть риск поймать TL.

    Чтобы улучшить асимптотику, можно вместо бинпоиска по ответу использовать два указатели.

    P.S. А дерево отрезков можно заменить на мультисет.

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

      Скорее всего, вместо дерева отрезков нужно использовать Sparse Table.

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

      А можно и за O(NM), если мультисет заменить на очередь с максимумом.

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

      А как мультисетом считать максимум на отрезке?

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

        Если мы используем два указателя или бинпоиск+sliding window, то у нас при переходе от одного запроса к другому удаляется что-то с префикса запроса и добавляются какие-то новые элементы на суффиксе. Если это окно, то удаляется крайний слева и добавляется первый справа, если два указателя — в зависимости от того, какой указатель и на сколько мы двигаем.

        Будем хранить все элементы отрезка в мультисете — тогда для ответа на запрос достаточно взять последний элемент мультисета. Это логарифм. Каждый элемент будет добавлен в сет 1 раз за проход и удален тоже 1 раз за проход — это тоже логарифм.

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

    А можно за , если делать вместо бинпоиска спуск по дереву, или, еще проще, использовать sparse-table, и идти по убыванию степеней двоек.

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

    Я решил за O(n * log n * log n), RMQ + перебор начала отрезка + бин поиск конца.

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

I've used unordered_map in problem C, but I've got hacked. What could be the problem?

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

i am submitting div2 3rd ..but its not showing me the case i m wrong on...!!!!

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

I am very sad about problem D. This is my code in contest and this is my code after contest. They different exactly one positionL = 0 and L = 1. If I have 10s to think that, then I can accept problem D and my standing not low.

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

So sad I didn't get rank 10, just because I missed the word "sequence" QAQ.

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

Finally, top 10 for me!!! :D

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

I've used Hashing to solve C. Here's my code 9849480.
It failed on the test #27. It's "..." testcase.
What's wrong with my code?

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

Problem A , in my opinion has a very ambiguous problem statement what is the answer to:- 90 90 or 9?

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

I get MLE on problem C. I solved it using a Trie. Can anyone have a look on my submission, please?

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

ML in problem C! :(

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

I got MLE on problem C at #19. I solved the problem using a Trie. Can anyone have a look on my submission, please?

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

Can someone explain the algorithm behind this code: http://mirror.codeforces.com/contest/514/submission/9850107

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

    It's a technique which can be used to find max(a[i..j]) when we have queries of increasing i and js. However the code given by you is not that efficient. Take a look at this submission: We can use a C++ 'deque<int>' to answer all the queries in a total of O(n) time.

    It's lengthy to explain why the algorithm works (after all it's not too complicated), but the whole operation is expressed as follow:

    • Everytime we increase j (a.k.a push a[j] into processing) we remove deque.back() while it's smaller than a[j], then deque.push_back(a[j]).

    • Everytime we increase i (a.k.a pop a[i] from processing) we remove deque.front() from the deque if deque.front() is a[i].

    • The answer for each i..j query is always deque.front().

    • In order to limit the sum, each time we increase j (process the next element), we increase i until {sum} ≤ k

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

In my opinion Problem A description was not clear.For input 90 output should be 9 according to problem statement but test data says answer is 90."Length of output number must be equal to length of input number" this single line of statement should have been added.

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

Any deterministic solution for C?

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

For problem C,why people get TLE in test #19?

Suppose,this solution

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

Why is rating update taking so long?

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

in Problem C O(m*l*ln(n)) with hashes and default c++ set gets TL on #20.

*solution 9841888

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

То чувство, когда перемудрил. 514A - Чубакка и число . Мой код — 9838729

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

I can't find my mistake about C problem, I used hash with unsigned long long

this is my soution: 9844038

Is there any problem if I substract from unsigned long long?

This is another similar solution, he used two hash, but I'm sure colisions is not my mistake ...somebody?

9836207

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

Sorry. Got the mistake.

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

I am sad I took TLE in C using set-stl,but I am happy because I achieved my first goal that was blue. Now it is div1. I hope to achieve that soon :D. I say that,because I want gray-green users that with "correct" practise everyone is able to achieve everything,and never give up.

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

А заморозка сегодня закончится или нет? Даже рейтинг уже обновлен, а заморозка до сих пор.

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

Guys is there anyone who could help me understand why my submission gives wrong answer in test case #6? By my calculation the output kills 3 droids even though checker comment states my solution kills only 2 of them. Any help is greatly appreciated.

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

    "How many shots from the weapon of what type should R2-D2 make to destroy the sequence of consecutive droids of maximum length?"

    You have been destroyed 1, 3 and 4th droid, so your sequence has length 2. In the correct answer, 2, 3 and 4th droid is destroyed, so the sequence has — better — length 3.

    Word 'consecutive' is the key.

    P. S. Sorry for my english :)

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

Why do I get MLE for problem D? http://mirror.codeforces.com/contest/514/submission/9850749

I have used segment tree so 4*N*5 memory, plus one more array of N*5 (both int). As N is just 100000, this should not exceed 256MB memory limit.

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

My 2 cents, since everyone writing about problem C seems to have tried hashing:

The similarity condition imposed is Hamming distance = 1. This is a metric space and can be solved with any of the metric tree structures. I used a BK-tree, and I got AC.

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

sdfdsfsdfsd no one can reach real coders (Even cheaters!)

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

When editorial is going to come? It will be interesting to see author's solutions to these problems :)

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

Still waiting for jury to start upsolving... :/

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

How could always the new comers be in the top list in division 2 ?!!!

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

Is O(M*N*log^2(N)) using segment tree supposed to TLE for problem D ?

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

Rebryk, I think data set of problem C ( 514C - Watto and Mechanism ) of today's contest was a little bit weak. Consider this submission: 9852063 which fails the test case:

1 1
abc
aa

Should not the output be NO? It gives YES instead.

Thanks. :)

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

became expert for the first time

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

i am getting memory limit exceeded on test 18 in C... i have used map<string,int> to do it.. can anyone suggest the reason for this? and also what would be a more memory efficient way of doing this question...

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

Can somebody please check why I got a run time error on test_25 http://mirror.codeforces.com/contest/514/submission/9848840

I have tried the test case on my computer and it worked.

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

this contest really interesting though i didn't solve any problem. actually i wonder why i can't solve at least problem A, and then i know that because some case (case 8) like this:

input :91730629

my output : 1230320

answer : 91230320

in my opinion, i think my answer actually didn't wrong because we could make the minimum positive number by inverting 1st, 3rd, 6th, and 8th character from the input and discard the leading zero. is somebody has the same opinion with me?

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

I used TRIE in Problem C but perhaps it should be String Hash? Anyway I FST beautifully.

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

I used TRIE in Problem C but perhaps it should be String Hash? Anyway I FST beautifully.

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

Where is editorial???

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

I got AC on 514B - Han Solo and Lazer Gun,but I alos have a question. gun is situated at the point (x0, y0). can stormtrooper at (x0,y0),too ? if so, i think some code maybe got WA。

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

I am trying to solve C problem. I see a lot of solutions where there is something like this :

for (int i = 0; i < n; i++) { ... for (int j = 0; j < s.length; j++) {

where n <= 3*10^5 and s.length <= 6*10^5 , so in worst case it works in 9*10^10 ~ 10^11 . Why it pass ? How can I calculate the worst complexity withing given time limit ?

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

The problem A has too many traps, and some of them is so boring, such as the fist digit can't be zero. I think it is meaningless......

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

Why does this give TLE for problem C? => http://mirror.codeforces.com/contest/514/submission/9853243

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

In problem C, I did not understand why the hash value of a string will not overflow long long. And if I mod using a 4 digit prime then there should be collisions.

Given the clue, "The total length of lines in the input doesn't exceed 6*10^5. Each line consists only of letters 'a', 'b', 'c'.", there can be a string of length 10^5 whose hash value can be huge.

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

Hi, somebody else used hash for the problem C?

I have WA #6 but I don't know why. Any help would be appreciated! :)

http://mirror.codeforces.com/contest/514/submission/9860261

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

For hashing, if I use 101 then I get WA for test case 8 but if I use 257 then it is accepted. Why so?

I chose 101 because the ascii value of c 99, hence I thought 101 was enough.

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

If you see a passed solution you think is wrong, is there a way to hack it in the practice room?

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

Codeforces Round #291 (Div. 2) champion ppfdd got AC on problem C.

But there is massive hack for his code.

While hashing, He converted a,b,c to 0,1,2.

So the result for this input:

1 1
abc
babc

the output generates

YES

which definitely WRONG ANSWER.

There should have been at least one test case regarding this factor. :3