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

Всем привет!

Напоминаю, что 3 апреля в 12:00 начнется квалификационный раунд Открытого чемпионата Москвы и МО по программированию (КРОК).

Чтобы пройти в Раунд 1 вам надо принять участие в квалификации. Из квалификационного раунда в Раунд 1 проходят все участники, набравшие не меньше баллов, чем участник на 1000-ом месте (при условии положительного числа набранных баллов). В раунде вас ждут несколько несложных задач, примерно расположенных по возрастанию сложности. Во время квалификации задачи тестируются системой только на претестах, а системное тестирование состоится после окончания квалификации (которая идет сутки). Претесты не покрывают все возможные случаи входных данных, так что тщательно тестируйте свои программы! Взломов, падения стоимости задач во время квалификации нет.

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

До окончания раунда категорически запрещается публиковать где-либо условия задач/решения/какие-либо мысли и соображения о них. Запрещено общаться на тему задач, обсуждать условия и проч. Будьте честными и пусть в Раунд 1 пройдут сильнейшие. Когда квалификация будет завершена, можно будет обсуждать задачи и решения.

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

Желаем удачи и удовольствия от решения задач!

UPD: Соревнование закончено! Спасибо за участие. В скором времени будут удалены нарушители порядка и результаты станут официальными. Неофициально — проходной балл в Раунд 1 составляет 1950 баллов.

UPD 2: Из таблицы результатов были удалены явные читеры и люди, кому не исполнилось 18 лет на момент регистрации. Если ваши результаты были удалены по ошибке, свяжитесь со мной для прояснения ситуации. Теперь проходной балл составляет 1900 баллов.

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

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

Вторая часть текста чуть более чем полностью совпадает с анонсом аналогичного раунда VK cup :)

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

    Тут главное, чтобы задачи не совпали. А анонс — дело наживное: на ТопКодере каждый год правила копируют из прошлого года, а потом еще месяц вылавливают баги и морально устаревшие фрагменты.

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

И -50 за пересабмит, все так же? Надо быть осторожным, а то попытка одна и можно не попасть в 1000.

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

    Да, будьте внимательны и осторожны. Конечно, лучше решить с запасом (т.е. все), чтобы спать спокойно.

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

I am getting a message like 'Only Championship registered users are allowed to participate in this round'..

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

    To participate in the championship, you must register on http://www.crocok.ru/championship/ (in Russian) before April 4, 2012.

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

Will the contest be unrated?

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

Sir, What should I do to register in the Championship,please?I register in the contest in http://codeforces.com/contests,but I failed.

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

rated?

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

WTF???

Стоимость задач падает?

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

Не получается задать вопрос, говорит "Поле должно содержать не более 1,000 символов", хотя оно, очевидно, содержит меньше 1000 символов.

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

    Учитываются символы HTML-разметки. Может дело в этом? Попробуйте посмотреть исходный код вопросы с помощью <>.

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

      Ну, уже неактуально, но на будущее учту, спасибо.

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

"The Qualification Round has no hacks or decreasing values of the problems." But the value is decreasing...

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

"The Qualification Round has no hacks or decreasing values of the problems." Somehow it is contradicted in the contest. I just got 960 for the first submission of A :)

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

Hi, I registered at the site, but can't participate in the contest since registration is cloesd. Is this intended?

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

"Contestants who gain a score equal to the 1000-th place finisher score or greater will advance to the Round 1 (also you need to gain positive score)"

If there are fewer than 1000 participants does that mean that as long as you get a positive score, you can proceed to the next round? =D

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

А то, что за не прохождение 1 претеста по причине WA не снимают баллы — это нормально?

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

Не дает посылать задачи и говорит: "Для просмотра страницы вы должны быть зарегистрированы на соревнование". Регистрация мной была проведена! Что нужно сделать?

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

    Зарегистрируйтесь на соревнование (красная ссылка-кнопка зарегистрироваться со страницы соревнований).

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

Написал 4 задачи из поезда с пропадающей сетью на айфоне (да, мсье знает толк :) ). Обнаружил проблему — с сафари при попытке отправить решение лезет ошибка упс что то сломалось... Благо опера была, из нее все норм.

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

It seems that not so many people participate in this contest.

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

    I think the number of participants is much bigger than the number of people who are actually willing to pay for their trip to Moscow for the finals in case they would advance :)

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

Повторите достижение Перельманова

Отказаться от миллиона надо?

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

    Все совпадения случайны.

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

    От миллиона Перельман отказался, а тут ПерельманОВ. Это 2 разных человека :)

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

how to cancel our registration in croc? i didn't read the text carefully and didn't notice you must be at least 18 to participate. What shall I do?

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

    why do you want to cancel registration ?

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

    see the register list after the green “registration complete” and find your name in this list. there will be an 'x' beside your name. it seems that you can cancle your registration here. ( by the way, i dont try it:) )

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

      why so much negative points?

      to jehad: because the contest is not designed for me. to liuyubo : i've tried it before.

      any how it's solved now. thanks for your answer.

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

как нормально решать D? сунул прекальк для чисел вида 10000к.

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

    Я сдал в лоб два цикла. Первый — i, по квадратам натуральных чисел, второй — j, по всем числам, таким, что i*j<=a+n-1. Это вроде бы линия. (там ряд к pi^2/6 сходится)

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

    http://e-maxx.ru/algo/prime_sieve_linear, за O( N * log N ), если количество делителей числа оценивать в log N.

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

    Я писал динамику:

    1) База: d[i] = i

    2) Идем по i от 2 до , d[i * i] = 1, идем по j, пока i × i × j <  = 107, релаксируем ответ: d[i * i * j] = min(d[i * i * j], d[i * i] * j)

    Затем пробегаем по всем i от A до B, суммируем d[i].

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

    найти квадраты, получить из них остальные:

    for(int i = 1; i < upper_power; i++)
        for(int j=1; power[i] * j <= a + n; j++) 
            anss[power[ i ] * j] = min(j, anss[power[ i ] * j]);

    находим суму от a до a + n, как уже написали выше )

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

    Решение в лоб (каждое число раскладываем на простые множители, меньшие sqrt(a+n-1) и во время разложения строим ответ для этого числа), аккуратно реализованное на быстром языке не пройдет?

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

      а что в "Запуске" на инпут 1 10000000?

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

        Понятия не имею. На питоне такое точно отвалится по TL, а переписывать на чем-то другом уже не хотелось.

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

          Я ожидал, что Вы напишите ТЛ, думаю что должно ТЛиться, т.к. у Вас будет 10^7 * (нечто C), где C будет больше 10 в среднем, а это скорее всего ТЛ

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

      Слишком долго, не?

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

      На Java 8.5 секунды ;)

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

    Сначала для всех чисел заполним массив единицами. Потом пробегаем по каждому полному квадрату k2, и для каждого числа, которое делится на этот квадрат, обновляем его элемент t[i] до . В конце концов для каждого числа будет записан наибольший квадрат, на который оно делится.

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

      N ln N?

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

        Yes.

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

          достаточно простое и красивое решение =)

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

            Учитывая, что оно линейное) http://hijos.ru/2011/02/27/summa-ryada-obratnyx-kvadratov-basel-problem/ Тут как раз эта сумма. N*pi^2/6.

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

              А как получить что решение линейное, опираясь на то, что ряд из обратных квадратов сходится? P.s. Мне казалось что из N чисел примерно sqrt(N) квадратов. Соответственно сложность О(sqrt(N)*N). Где я ошибаюсь?

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

                Да, среди N чисел примерно sqrt(N) квадратов. Для каждого квадрата x выполнится N/x операций.

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

          откуда логарифм берется? Там же 1.6 * n в худшем случае

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

          Нет, ряд обратных квадратов сходится к (Pi^2)/6, т.е. данное решение работает за O(N).

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

    fill(t, t + max_n + 1, 1); for (int i = 2; i * i <= max; ++i) for (int k = i * i, j = k; j <= max; j += i) t[j] = max(t[j], k);

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

    Объявим массив на 107 элементов. Рассмотрим все такие i > 0, что i2 ≤ 107. Для каждого i найдём все кратные i2 числа x = k·i2, такие, что x ≤ 107, и в arr[x] запишем множитель k. Заметим, что если обходить i от наименьшего к наибольшему, то в конце в каждой ячейке массива будет кратный множитель наибольшего квадрата, делящего соответствующее число. Тогда ответ — это сумма чисел от arr[a] до arr[a + n - 1].

  • »
    »
    12 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    for (int i = 2; i*i <= N; ++i) {
    	for (int j = i*i; j <= N; j += i*i)
    		m[j] = i*i;
    }
    for (int i = a; i < a+n; ++i)
    	ans += i / m[i];
    
»
12 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Задача Е: какой ответ на тест

<a><b><b><a><b><b></b></b></a></b></b></a>
1
a b b

?

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

    3

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

      А почему 3? Пронумеруем тэги от 1 до 6.

      Мы ведь можем выбрать так:

      1) 1 2 3
      2) 1 2 5
      3) 1 2 6
      4) 1 3 5
      5) 1 3 6
      6) 1 5 6
      7) 4 5 6
      
      • »
        »
        »
        »
        12 лет назад, # ^ |
          Проголосовать: нравится +10 Проголосовать: не нравится

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

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

        Я тоже долго тупил, потому что сначала понял задачу именно так, как ты. Но, во-первых такую задачу я могу решить только динамикой 200 * N. И ответ там может быть очень большим. Пример, цепочка из 10^5 одинаковых вершин. И запрос типа 200 a a a ... .

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

          Аналогично... :D

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

          Блин, вот печаль-то.

          Тогда задача становится намного проще.

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

          Причём при этом толковании условия можно пройти первые 4 претеста ^_^

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

          А можешь написать те 3 последовательности, которые образуют ответ?

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

    вроде 7

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

how did you solve problem E ???

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

    Bruteforce of course!

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

      Why had I negative votes? I think an O(NL) bruteforce is quick enough for this problem. I have tested a lot of data which I tried to make as large as I could, and none of it takes more than 1 second.

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

    simplexml class + xpath method, 2 lines of code. lol (PHP)

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

      .. and then time limit exceeded? lol

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

      1469680 05:21:45 sander E — BHTML+BCSS PHP Runtime error on test 8 50 ms 10016 KB

      I am afraid that you did not pass the system test.

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

what's up with system test?

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

When system testing is start??

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

что–то маленький проходной в этот раз вышел...

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

Почему не работают всплывающие окна с информацией о том на каком тесте упало, и прочей инфой?

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

Моя задача E не прошла тесты. Как вы считаете, ущербен ли в целом подход?

Вначале я составляю дерево BTHML-тэгов. Значение каждого узла дерева равно имени тэга, а его потомки — вложенные в него тэги. Корневой тэг имеет значение nil. Затем при считывании BCSS-правила оно в виде массива имён элементов упаковывается в массив (т.е., идёт массив, элементом которого является массив строк) и отправляется в дерево на разбор по следующему алгоритму:

1). Результат := 0.
2). Перебираем все элементы массива правил BCSS:
- Если значение узла равно первому элементу массива, то создаётся копия массива без первого элемента.
- Если эта копия пуста (разобрано всё правило BCSS), то Результат++.
- Иначе добавить эту копию к массиву правил bcss.
3). Если у элемента нет потомков, то вернуть Результат.
4). Иначе вернуть Результат + сумму результатов разбора массива правил всеми поддеревьями.

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

    я также хотел ее решать. Но реализовывать заколебался... к тому же по времени не прошло бы... Есть еще 2 мысли: 1) с помощью регулярок попробовать 2) попробовать прикрутить Карпа... эти 2 мысли я только в голове прокрутил и что-то тоже не особо ... Вообще было бы не плохо увидеть разбор задач от людей которые решили ее

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

      Милль пардон, есть ли способ узнать, почему программа не прошла окончательное тестирование: по времени или из-за неверного ответа?..

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

        Есть. В своём профиле смотрите вкладку "попытки", нажимая в левом столбце на номер отправки увидите своё решение и там же отыщите тест, на котором программа свалилась. Из таблицы решения почему-то последние дни не открываются.

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

как правильно решалась B?

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

    Перебором. Генерируем числа до тех пор, пока не случится повтор с одним из предыдущих. Выводим номер текущего — номер первого вхождения совпавшего элемента

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

      разве число не может более одного раза входить в период?

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

        кстати, да... вопрос в "кассу" я генерил последовательность до получения постоянного периода. Т.е. как минимум 3 раза должно появиться нужное число + период между 1-2 и 2-3 должен совпадать и быть минимальным.

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

          Это лишняя работа. Период между 1-2 и 2-3 всегда будет одинаковым, так как это будут одинаковые последовательности, т.к. вся последовательность зависит только от начального элемента.

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

    разобрался. генерируем m+1 число. по принципу Дирихле m+1 всегда совпадет с одним из m предыдущих чисел. выводим разницу их номеров.

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

      Ну надо брать тогда ПОСЛЕДНЕЕ такое число. Иначе, очевидно, вы можете получить, kT, где T — период

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

        ну я имел в виду, что мы будем искать это число с конца. спасибо за уточнение)

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

    Один из вариантов: Храним на какой позиции в последовательности последний раз хранилось то или иное число. Затем подсчитываем следующее число последовательности и проверяем, встречалось ли оно до этого. Если да, то ответ — (текущая позиция) - (позиция последнего вхождения этого числа). Так как последовательность всегда зацикливается (из условия), то ответ мы всегда найдем.

    int c = r,
        t = 1;
    while (true) {
    	if (p[c]) {
    		cout << t - p[c];
    		return;
    	}
    	p[c] = t++;
    	c = (a * c + b) % m;
    }
    

    Это первое, что приходит в голову :)

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

In problem E, can someone explain me why the answer for the following case is '3' ?

<hnhi><ihjhi><ihjhi></ihjhi></ihjhi><hnhi/></hnhi><h><hnhi><hnhi><ihjhi></ihjhi></hnhi></hnhi><ihjhi></ihjhi></h> 1 hnhi ihjhi

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

    2 ihjhi in first hnhi
    1 ihjhi in the middle

    You shouldn't calculate pairs (ihjhi in hnhi), but only ihjhi, that lies in any hnhi

    For example answer is always not bigger than tags number

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

Как делать пследнюю задачу, подскажите?

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

А это рейтинговый контест или нет? Что-то рейтинг никак не обновляется

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

    нет

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

    если прочитать пост на главной внимательно, но в самом конце написано: "Зарегистрироваться на раунд можно в любое время вплоть до его окончания. Результаты раунда не будут влиять на рейтинг, внеконкурсное участие в раунде не разрешается. Впрочем, все задачи попадут в архив после окончания раунда"

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

Как правильно решалась C?

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

Считаю интересным ТЛ по задаче E. TL 8 секунд, если вы не заметили. Увидя такой большой ТЛ я побоялся и написал задачу очень аккуратно, оптимизировано. В итоге моё решение отработало за 270 мс :). Конечно это такое же лобовое решение за N * M. Основные оптимизации это

1) Конвертация 10-символьных строк в int64 с помощью сдвигов на 5 бит и прибавления номера буквы 'a' — 1, 'b' — 2.
2) Один DFS с циклом внутри по всем запросам.
3) Самописные списки смежности, без векторов.

ТЛ сделали с запасом, я аж испугался :)

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

    А у меня 7580 мс, если память не изменяет :)

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

    Можно узнать назначение функции ASS?

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

      [:||||:]

      Это assert

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

      Она вызывает Runtime Error — Ошибку времени исполнения. Иногда полезно проверять условия в которых твоя программа работает. Например в процессе решения задачи ты оценил, что количество неких интересных чисел не может быть больше 1000, и на этом строишь своё решение. Я в таком случае после генерации этих чисел добавлю ASS(n <= MAX_N) и увидев Runtime Error подумаю, что ошибка в этом. Чтобы убедиться что сработал именно ASSERT можно изменить логику этой функции и вызывать к примеру TL, тогда следующим сабмитом ты будешь знать на 100% в чем ошибка. В приведенном примере я получу рантайм уже тестируя на сэмплах, но надеюсь назначение теперь более понятно.
      ЗЫ: кроме того функция написана так, что в ней удобно ставить breakpoint во время дебага я часто этим пользуюсь и делаю что-то вроде ASS(x == 3 && y == 42); в нужных условиях программа падает и смотрю что на стеке, в переменных, почему мы сюда пришли...
      А еще как-то этот замечательный код ++(int*)0 перекочевал в release программы на работе. Юзеры были очень рады.

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

    m,n в задаче оба до 200, так что ты вероятно все же имел ввиду длину*m

    Ну а если по делу: не знаю, по-моем логичнее все жестко оптимизить, когда ограниченяи маленькие а не большие:)) Тут видимо авторы дали волю всяким неосновным языкам

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

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

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

    А зачем списки смежности? Чушь спросил.

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

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

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

В задаче про маршрутку надо массив из 10000000 элементов. В pascal не возможно его создать. Там через списки или есть более красивое решение???

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

    В Delphi можно.

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

    Не обязательно совсем, зачем так много. В моем решении используется массив на 100000 элементов.

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

      Извиняюсь. :) Перестарался с нуликами. Да массив на 100000 надо, а в паскале можно только на 10000 элементов. Но я уже посмотрел в делфинет такой проблемы. :) Буду ее использовать.

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

        Это разве что в турбо паскале каком-то массив на 100000 нельзя создать. Пишите во Free Pascal.

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

    В моем решении только три массива по 10^5.

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

Сколько участников проходит в Round 2?

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

    3-4 апреля (с 12:00 03.04 по 12:00 04.04) — квалификационный тур (дистанционный), в первый раунд проходят 1000 участников,
    6 апреля (19:00-21:00) — первый раунд отборочного тура (дистанционный), во второй раунд выходят 300 участников,
    20 апреля (19:00-21:00) — второй раунд отборочного тура (дистанционный), в финал выходят 50 участников,
    27 апреля — финал (очный, в офисе компании КРОК)

    Ссылка на анонс(не меньше чем третья на этой странице)

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

Весело будет тем из заграницы кто пройдёт на финальный этап за 7 дней визу сделать :)

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

Will Round 1 be rated or not? There is no article announcing it.

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

Will there be hacks in round 1? thanks

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

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

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

How to solve question B. Pseudorandom sequence period by number theory?