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

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

Здравствуйте!

Кто ещё не участвовал или не прошёл с QR 1 приглашаются на QR 2, который состоится в эту субботу (2 июня, в 11:00 по Московскому времени). Будет весело. Присоединяйтесь.

Мы постарались учесть полученные замечания. (Но я всё равно в жюри — значит, не все. :-)!)

Забыл. Предоставляю ссылку — http://russiancodecup.ru. И будьте точно уверены, что вы зарегистрированы...

До свидания!

P.S.: А первым 200 участникам полагается футболочка. Заметьте, вторую получить нельзя, если вы уже квалифицировались, так как Вы не можете участвовать в этом раунде.

P.S.: А вот и разбор: http://russiancodecup.ru/round/7/analysis.

**P.S.: Я попробовал ввести инновации и модернизации пока не совсем официально, спасибо спонсорам pashka и andrewzta за предоставленные айфоны для съёмки. Собственно, видео-разборы: http://www.youtube.com/channel/UCjum2OyCTe4wt_fkldljOrw?feature=mhee. **

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

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

Может быть, мы постарались учесть полученные замечания?

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

А внеконкурсное участие почему нельзя? Обидка, могли бы и побаловать:(

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

    В тренировках потом напишешь

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

      Написать-то напишу потом, но пропадет половина интереса. Когда знаешь что 1000 человек по стране читает те же самые задачи что и ты — интерес совершенно другой. Ну вот почему нельзя сделать кнопку "вне конкурса"? Разве это сложно?

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

        Нагрузка на сервер, и КФ с его мощными серваками так поступал на квалах, ибо очень много участников.

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

          Ага, конечно. 200 человек, которые прошли квал в прошлый раз, + не сильно много сотрудников компании mail.ru, которые захотят писать этот турнир, разумеется, создадут гигантскую дополнительную нагрузку на сервер.

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

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

P.S.
Удачи всем, кто хочет квалифицироваться, но еще не квалифицировался.

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +30 Проголосовать: не нравится
...А ещё возможно намечается некоторый неофициальный бонус от меня… Можете даже поугадывать.

В 1 задаче будет ошибка и раунд признают нерейтинговым?

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

У меня сайт не грузится. Похоже, у других всё в порядке...

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

пост про то, что тестирование любой задачи в 6 минут — это очень плохо и что хорошо было бы заиметь больше тестирующих машинок

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

    AFAIK это проблема веб морды — andrewzta говорил, что в самой системе все работает быстро и очередей почти нет

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

    У меня так со всем задачами, по которым отправлял решения, кроме D. По D вердикт не приходил аж 25 минут... (это после сообщения о том, что "По задаче D на тестирование может уходить до 5 минут. Все прочие задачи тестируются быстрее")

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

    В этот раз проблемы действительно были с очередью — в задаче D у нас было 89 тестов и многие решения работали довольно долго.

    Мы уменьшили число тестов, но очередь так и не догнала real time.

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

Думаю, уже можно спросить, осталось меньше минуты.

Как решать C?

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

В Е верно такое:
1. ( ->  + 1, ) ->  - 1 (баланс);
2. Бинпоиском находим отрезок минимальной длины с минимальное суммой на нём 0 (с помошью дерева отрезков, которое возвращает подотрезок с минимальной суммой с хотя бы одним элементом из массива).
Не успел дописать, чтобы с хотя бы 1 элементом возвращало. :)
UPD: не проходит по TL :(

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

В задаче D выдавало WA 6, когда поставил условие if (d > m) { cout << "Impossible"; return 0; }
Разве это неправильно?

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

В задаче B ведь бинпоиск + хэши? Если нет то как?

Как решать D?

Отсортил задачи по сложности, и сделал dp[максимальная сложность][маска взятых тем].

До сих пор не понимаю почему во втором тестовом примере ответ Impossible =(

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

    В В да. D — динамика на битовых масках(состояние — маска и число обработанных уровней).

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

    B: Перевернём строку, далее находим самый длинную общую подстроку, которая начинается ещё и с одного и того же места в обеих строках (при равенстве самую близкую к началу).
    O(n) + простейшая реализация.

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

    Нет. Просто для каждой позиции записываем совпадает ли этот символ и симметричный ему, если да, то максимальная длина ответа, которая может достигаться в этом символе — значение в предыдущем + 1, иначе 0. После этого просто выводим максимальный ответ и то, где он достигается.

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

    Не, там всё проще... обычный перебор. :) Перебираем все возможные начала искомой строки, для каждого находим конец строки из расчёта, что искомая строка должен быть максимальным. Каждый раз счётчик начала строки увеличиваем на длину найденной строки + 1 (без этого будет O(n^2), и оно не уложится в TL). Из этого всего находим первый максимум.

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

    B я делал так.

    В D просто будем вести динамику dp[i][msk], где i — сколько мы уже взяли сложностей, msk — маска взятых тем. Переход простой: просто перебираем те задачи, у которых сложность i + 1 и у которых маска тем не пересекается с маской в состоянии. Казалось бы, все. Решение работает за O(2^m * (n + d)).

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

    Я так сдал.

    Идём с двух сторон

    --пропускаем разные символы.

    --собираем одинаковые

    --если пересеклись указатели

    ----да-берём весь большой палиндром, конец

    ----нет-берём что нашли, идём в начало цикла

    и так до конца строки

    может помочь тест axlolya

    ох уж это форматирование кодефорсес

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

    В задаче В я просто писал 2 указателя :) Коротко и быстро.

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

    В B намного проще. Просто сравниваем символы i и n — i — 1 и увеличиваем текущую длину если равны, если не равны — обнуляем. Проход за линию.

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

    B — одна итерация по строке...

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

    Я вроде тоже задачу В за O(N) делал, но у меня был ТЛ3. почему? вот код

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

Так и хочется сделать с собой что-то нехорошее =_=...Криво прочитал условие 2-ой...Думал, что слева и справа может дописываться разное количество символов...И вместо элементарной задачи, писал суффиксный автомат(Точнее, не писал, а пытался понять, где криво скопипастил с емакса)....

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

    Я так же прочитал. По-моему, такие вещи нужно выделять жирным шрифтом. Или КАПСОМ. Или ЖИРНЫМ КАПСОМ.

    Я тот случай задачи решал за N * log^2 N — хеши и бинпоиск. Лишь когда тестировал, до меня дошло, что условие криво прочитал.

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

      )))))ааааааа, ну если одинаковое то все ясно)

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

      а решение с бинпоиском детальнее можно?(неплохо бы на pastebin)

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

        Заметим, что если длина ключа — K, то всегда найдется ключ длиной меньше K. Снаружи бинпоиск по K.

        Ну и внутри проверяем — найдутся ли в исходной и перевернутой строке две одинаковые подстроки длины K — для этого выписываем хеши всех подстрок длины K, сортируем и идем 2 указателями.

        Зная длину ключа, несложно его восстановить.

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

    Я тоже сначала неправильно прочитал, но написал просто за n*log^2(n). Ну то есть бин. поиск + хеши (в проверке бин. поиска мы перебираем подстроку этой длины, а потом ищем самое правое вхождение хеша перевернутой строки)

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

      Вообще то бинпоиск+хеши за NlogN пишутся...

      Перебираем строку без добавленных по краям символов (N), внутри бинпоиск по длине ответа (logN). Сравнения за O(1) делаются

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

    мужики, я с вами

    так и не сдал B :D

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

    Я буду внимательно читать условия, я буду внимательно читать условия. Несколько раз. Медленно и вдумчиво. Вслух и с выражением. Слитый экзамен + слитый контест — это уже слишком.

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

      кстати, я вот минут 10 пытался понять, что такое развёрнутая строка

      всё-таки "развёрнутый" можно понять ещё как "расширенный", а вот "перевёрнутый" никак иначе понять нельзя

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

Опечатался в одной переменной в E. К сожалению, вердикт пришел только после завершения контеста. А посылал задачу за 5 минут до конца. Печально...

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

    Я в Д забыл один break поставить, вердикт пришел минуты через 3 после окончания. хотя отправлял за 8 минут. Админам явно нужно поставить доп. компы для тестирований)

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

Что писать в месте учебы, если я выпустился со школы и не поступил еще в университет?

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

Почему в С не работает такое: перебираем перестановки, строим 4 треугольника(из 1 2 3, 1 4 5, 2 5 6, 3 6 4), смотрим что-бы они были положительной площади, и что-бы сумма площадей трех любых была больше площади 4го?

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

    Потому что вместо тетраэдра может получиться выпуклый четырехугольник с диагоналями.

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

      А как правильно ее решать?

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

        Где-то выше уже написано. Можно проверить существование ненулевого объема. Для этого можно использовать формулу объема тетраэдра по длинам сторон.

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

        Надо еще объем проверить на то что он положительный.

        Первая же ссылка в гугле: http://www.mccme.ru/free-books/mmmf-lectures/book.21.pdf

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

        Я делал так. Проверяем для каждой перестановки. Строим 2 грани с общим ребром (естественно проверяя для них неравенство треугольника) и смотрим, какое минимальное и максимальное расстояние может быть между их вершинами, не принадлежащими общей стороне (в первом случае они будут лежать в одной полуплоскости относительно общей стороны, во втором — в разных). Если последнее оставшееся ребро попадает в этот интервал, то ОК.

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

Мне одному показалось, что сегодня задачи были проще в несколько раз (в 3.5 примерно :), чем на первом квале?

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

Выложат ли контест в тренировки CF?

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

А дорешивание не предусмотрено?

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

Спасибо Aksenov239 за видеоразбор. Особенно мне понравился разбор задачи А — все четко, понятно, я смог разобраться во всех деталях реализации, хотя до этого не имел понятия, как решить эту задачу.

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

Спасибо всем кто участвовал... И поздравляю всех, кто прошёл в следующий раунд...

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

    А можно узнать, почему я пропал из рейтинга? У меня было 2 задачи, штраф 21. Где-то около 130 места. Я обрадовался футболке, зашел в настройки, указал данные.

    А сейчас в профиле, в строчке 2-го квал раунда у меня пусто, а в рейтинге по второму квалу меня тоже нет?

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

спасибо за видео-разбор, продвигайте эту тему далее!