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

Я рад приветствовать всех любителей программирования!

Сегодня состоится второй квалификационный раунд Яндекс.Алгоритм, и для вас его готовили Артем Рахов, Михаил Мирзаянов и я.

Обратите внимание, что как и во время предыдущего квалификационного раунда, функциональность Codeforces на время соревнования будет немного урезана. Не беспокойтесь, все вернется на место после окончания раунда.

Напоминаю, лучшие 500 участников проходят в Яндекс.Алгоритм 2011 Раунд 1, который состоится 20 мая в 19.00

Удачи!

UPD: соревнование закончилось, я поздравляю tourist с победой!

Напоминаю, что это был квалификационный раунд, а это значит, что первые 500 участников в конкурсе выходят в следующий раунд! Мои поздравления!

Сегодня у нас целых два самых удачливых участника: Hossein_Hima и ss.nurboolean - они разделили 499-500 места с результатом в 978 балла. Желаем еще большей удачи :)

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

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

Зарегистрировавшихся больше чем на топкодере!
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Будем молиться о том, чтобы все прошло гладко с технической стороны. Как никак 2087+ зарегистрированых.
15 лет назад, скрыть # |
 
Проголосовать: нравится -28 Проголосовать: не нравится
Ох... Чувствую сервачок-то уйдет в астрал от такой напряги. Слишком уж неудобным для большинства оказалось время первой квалификации...
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Рекорд зарегистрировавшихся разбит в щепки.
15 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится
Рейтинг считается с учетом внеконкурсных участников(это видимо те то прошли отбор в первой квале?)?
15 лет назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится
Колян авторы не могут участвовать в своём контесте. Зачем ты зарегался (решил норм прокачаться :-))?
15 лет назад, скрыть # |
 
Проголосовать: нравится +60 Проголосовать: не нравится
Может на всякий случай сделаете pdf версию задач.
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +8 Проголосовать: не нравится

Almost 2200 registrants :P Grats :) Hope the server will stand it :)
15 лет назад, скрыть # |
 
Проголосовать: нравится -6 Проголосовать: не нравится
Topcoder fail не ожидается - зарегистрировалось меньше, чем 2200 человек.
15 лет назад, скрыть # |
 
Проголосовать: нравится +35 Проголосовать: не нравится
n=2 is awesome. :)
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Хех, 1657 участников. Определённо рекорд.
А в начале дня у меня были огромные сомнения насчет 2000 регистраций.
15 лет назад, скрыть # |
Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится
If you already have qualified, you may take part as out of competition participant (informal). Anyway the contest will be rated for you.


Does this mean the contest is rated for the informal people?
15 лет назад, скрыть # |
 
Проголосовать: нравится -9 Проголосовать: не нравится
о май гад. это ж надо догадаться до случая и не суметь его заифать. Ну вроде должен быть сегодня ап все равно
15 лет назад, скрыть # |
 
Проголосовать: нравится +67 Проголосовать: не нравится
Прежде всего хотелось бы поблагодарить Михаила Расиховича Мирзаянова и всю команду codeforces за то, что сегодня ничего не упало. Пускай была ограничена функциональность, но при 2000+ зарегистрировавшихся это более чем позволительно. Спасибо!
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Ничего понять не могу.. Первая задача не прошла сразу.. прошла только после того как дописал cout<<endl; cout.flush(); всегда без этого проходили задачи. Обидно блин. Во второй задаче тоже не понял какая-то подобная лажа была.. (помимо моего косяка) :(
15 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится
На чем ломали B кроме n=2? Неужели столько человек допустили такой ляп?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Если не трудно, можете посмотреть задачу А у пользователя oks, и прокомментировать, как она умудряется работать на 10^9  меньше чем за секунду? Неужели у кодфорсеса такие сервера, что 10^9 операций уже не проблемма? Или это какие-то хитрые оптимизации плюсового компилятора?
15 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится
Разочаровали две вещи:
1). Участники "вне конкурса" и остальные в неравных условиях, так как в комнатах "вне конкурса" было гораздо меньше слабых участников и шанос для челленджа. И это сильно повлияло на таблицу результатов.
2). Задача Д. Обычная задача уровня С, к которой прикрутили сертификат, что ее усложнило чуть более, чем вдвое. Я понимаю, когда сертификаты нужны в неочевидных задачах, чтобы проверить, что у участников нету решения лучше авторского, но в данном случае это просто стало техническим усложнением.
Но сами по себе задачи (без привязки к сложности) были очень хороши, спасибо!
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +3 Проголосовать: не нравится
    Сертификат == восстановление ответа? Или я чего-то не понимаю?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -12 Проголосовать: не нравится
    Да, странная задача. Возможно у неё есть какое-нибудь красивое решение?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +8 Проголосовать: не нравится
    Ну а Вы понимаете, что если бы в вашей комнате были те кто в конкурсе, то взломав их решение, Вы не дали бы это сделать кому-то другому который на конкурсной основе, и в итоге повлияли бы на положение в целом?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    То, что восстановление ответа усложнило D в два раза - несогласен.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А как вообще реализовать тут динамику в задаче D?
    думал над одномерной динамикой, где F(N) - оптимум для префикса очереди длиной N , и двумерной, где F(L,R) - оптимум для подочереди с началом L и концом R.
    Но как вывести рекурентную формулу тут, не могу понять.

    Ведь если первые трое A B C  и мы пробуем взять A и C то у нас уже не будет интервала, который просчитан в динамике. у нас будет интервал + дырка + число В.

    Подскажите идею динамики пожалуйста
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Я писал динамику f(i,j), где i - номер начала непрерывного куска (те, которых мы еще не рассматривали), а j - номер невзятого человека из рассмотренных... получаем рассмотрев первых 3-х человек возможны переходы в f(4,1), f(4,2), f(4,3)
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Проще двумерная динамика F(L,R) - ответ для очереди где идет элемент L потом какой-то промежуток, а потом цельный отрезок от R и до конца. Ответ на вопрос задачи - F(0,1). Переходы выполняются за O(1).
    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится

      Спасибо обоим.
      Чето не пришло самому в голову.
15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Я не успел закодить, может кто пробовал? В D жадник прокатывал или ДП только?
15 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится
как же печально печально получить ва на 103(!) тесте =((
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
В С подразумевалось писать тупое моделирование или что-то посерьезнее? Я промоделировал, но до последнего сомневался, что пройдет. В итоге прошло все-таки.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Ну, смотря какое тупое. Предполагалось, естественно, за квадрат.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      O(n^2*log(n)). Понятно, что не позднее чем через n шагов последний приедет. В каждой вершине - массив текущих дивизий. На каждом шаге перекинем всех, кого можем, вверх, и отсортируем дивизии во всех вершинах. Почему-то в этом решении я был не уверен. Показалось, что сортировка на каждом этапе убьет слишком много времени.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +4 Проголосовать: не нравится
        не всякое n^2 log n зашло
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +1 Проголосовать: не нравится
        я в каждой вершинке хранил сет. итого ТЛ 101 о О
        наверно надо было что нить побыстрее stl-овского сета написать =_=
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Точно такое же решение и тот же самый 101. 
        • 15 лет назад, скрыть # ^ |
          Rev. 2  
          Проголосовать: нравится 0 Проголосовать: не нравится

          Как я понял, с priority_queue зашло(надо проверить), с сетом у меня тоже не зашло


          UPD: тупая замена на priority_queue  у меня прошла
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Проходила STL очередь с приоритетами. Еще проходили сортировки.А вообще можно квадрат чистый. 
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          В вершине храним вектор, на каждом шаге тупо его сортируем. AC.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится -10 Проголосовать: не нравится
          У меня чистый квадрат без сэта...
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +4 Проголосовать: не нравится
            Да у многих - чистый квадрат, который, к тому же, гораздо проще написать. Я пока не придумал решения за квадрат не писал ничего.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Сет и так очень быстр. Странно, у меня priority queue вошла.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится -13 Проголосовать: не нравится
          Именно этим мне этот раунд и не понравился - зачем выставлять таймлимиты и ограничения, на которых падает стл? На линейном графе из 5000 вершин с пропускными способностями 1 (наверное, самый жесткий тест) мое решение работает 3 сек., но заметил я это только за 3 мин. до конца. Главное, что до тестинга это невозможно просчитать - и я думал, что с высокой вероятностью зайдет. В общем, вот за это авторам дисреспект.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Я тоже на этом тесте затестировал, понял что STL - меееедленнный и переписал своими структурами на массивах.
            Но все равно на тесте из одной ветки дерева длинной 5000 вершин на 2.00Ггц работает 3 сек, а на КФ макс 640мс.

            Наоборот, хорошие ТЛ, учат оптимизить решения.
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится 0 Проголосовать: не нравится
              Мне кажется, что авторы хотели сделать такие ограничения, чтобы за квадрат заходило, а за логарифм нет, и они были близки к цели...

              Но в принципе, и помимо сетов существовали существенные оптимизации, напр. писать на статике,
              не писать рекурсию, а  бфс сделать один раз, а не на каждом шаге и т.д.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится -7 Проголосовать: не нравится
            Я писал это решение уже под конец, не придумав решения за квадрат. Предположил, что за квадрат нельзя, а если везде держать сеты, то на самом деле квадрат и выйдет с маленькой константой (не придумал тест, который это обломает, но и не доказал). Т.е. я особо не удивлен, что мое решение упало. Я больше удивлен тем, что его можно запихать немного прооптимайзив. Именно этим мне эта задача тоже не нравится.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +3 Проголосовать: не нравится
            > Именно этим мне этот раунд и не понравился - зачем выставлять таймлимиты и ограничения, на которых падает стл? 

            Затем, чтобы писали квадрат. Подразумевается, что либо ты пишешь решение за квадрат, и спокоен за него, либо тратишь эн десятков минут на оптимизацию решения за n^2*log n, которое ещё и не факт, что зайдёт.

            > Главное, что до тестинга это невозможно просчитать - и я думал, что с высокой вероятностью зайдет.
            Невозможно просчитать, что 5000*5000*log(5000) ~ 3.07193*10^8 медленных, используюших сет операций скорее всего не влезут в TL? Если Вы не знаете, какова производительность структур данных STL, то это же Ваши проблемы, а не "авторам дисреспект".

            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится 0 Проголосовать: не нравится
              Я писал на яве и не был спокоен за квадратное решение. Потратил наверное с полчаса чтобы найти еще более быстрое. В итоге не нашел и написал квадрат. Для меня плохо то, что потом на D мне не хватило буквально одной минуты, так что эта C мне не понравилась :)
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится -10 Проголосовать: не нравится
        sortirovrka sliyanuem(poezdov ) tut sovsem malo trebuet vremeni .
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +5 Проголосовать: не нравится
      а как за квадрат?
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Отсортировать по приоритету, и хранить то, сколько дивизий толпяться в И-той вершине в Джи-тый день. Тогда для текущей дивизии как только количество дивизий в текущий день меньше пропускной способности, наша дивизия увеличивает это количество на 1 и переходит в предка.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +8 Проголосовать: не нравится
        Сортируем по приоритету, для каждой вершины знаем предка, для каждой дивизии храним текущее местоположение.
        Теперь в каждый день рассматриваем дивизии в порядке возрастания приоритета и, если ребро в предка еще не переполнено, переводим эту дивизию в предка, считая сколько раз ребро уже использовалось.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    я минут 20 не верил что можно моделировать. Искал решение другое. Потом плюнул, решил моделировать с приоритетными очередями, но в итоге не успел
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    TL на 101 тесте... Все-таки не самое тупое моделирование. Пару минут не хватило, чтоб оптимизировать =/
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Можно было моделировать по-умнее без сетов за O(n^2). К сожалению, я сделал с сетами и получил TL 101 как и у многих
15 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится
For mathematical reasons, for problem C I would like to know what is the maximum number of days, if the weight of each edge is one. I think this number cannot become to large, but I would like to have some upper limit.
15 лет назад, скрыть # |
 
Проголосовать: нравится -12 Проголосовать: не нравится
Немного неприятно удивило то, что по условию В "Для того, чтобы играть было еще интереснее, Вася выбрал n таких непустых множеств, что никакие два из них не имеют общих элементов.", но при этом не сказано, что элементы в каждом множестве различны. Между тем, чекер не воспринимал такие тесты, так как "DUBLICATED NUMBERS". Много хаков ушло=)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Tragedy. I wasted my first 60 mins.
15 лет назад, скрыть # |
 
Проголосовать: нравится +6 Проголосовать: не нравится
Спасибо, автору за задачу В :)) Думаю это пошло мне на пользу.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Сто первый с PriorityQueue.
15 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится
My java solution in problem C TLEd and an identical C++ solution passed, this is really annoying :S
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
а в CF уже добавлена фича включения взломов в систесты?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
How can I know whether I have qualified?
15 лет назад, скрыть # |
 
Проголосовать: нравится +91 Проголосовать: не нравится
Задержка с пересчетом рейтинга связанна с восстановлением функциональности? Кстати когда он будет пересчитан?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +17 Проголосовать: не нравится
    Не поймите меня не правильно, но мне не понятно, почему человеку ставят за такой коммент +50, а другому за контест +103...
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Рейтинг только что пересчитали.
    И еще, куда делись графики рейтинга в профилях (или я один их не вижу)?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +6 Проголосовать: не нравится
      Они убираются как часть утяжеляющей функциональности(также как архив) на время раундов Яндекса
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +6 Проголосовать: не нравится
      Читаем внимательно:

      Обратите внимание, что как и во время предыдущего квалификационного раунда, функциональность Codeforces на время соревнования будет немного урезана. Не беспокойтесь, все вернется на место после окончания раунда.

      Скоро все будет на месте :)

15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Кто-нибудь знает линию в C? Можете рассказать?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
У меня вышла веселая ситуация с B. Написал решение, где не учел случай с n=2. Послал, получил WA#4. Сразу почему-то подумал, что там как раз n=2. Но каким-то чудом моя программа проходила тест с n=2 правильно! Долго втыкал, потом нашел багу. Оказывается, что при вводе я указал не n*(n-1)/2, а n*(n-1) чисел. Сдал в итоге с +1, зато не потерял времени на то, когда тебя взломают.
До сих пор теряюсь в догадках, как считывание несуществующих чисел помогло пройти тест с n=2.
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится +1 Проголосовать: не нравится

    Похожая история, только я в одном месте перепутал n * (n - 1) / 2  и n.
    В итоге +14 хаков. Очень рад этой своей баге=)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Возможно потому, что считывание несуществующих чисел даёт последнее считанное число, и там было что то вроде
    2
    2 1 2 [2 2 2]
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Скорее всего так. Тогда решение работает. Однако этот факт отпечатал в моем сознании, что случай с n=2 включили в претесты, и я даже не пытался никого ломать.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
в "А" один и тот же тест два раза загнали
15 лет назад, скрыть # |
 
Проголосовать: нравится +23 Проголосовать: не нравится
when will be the ratings updated?
15 лет назад, скрыть # |
 
Проголосовать: нравится +36 Проголосовать: не нравится
When will the rating be updated? 
I won't go to sleep until my rating changes ...
It's 3 in the morning in CHINA +_+...
15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
а будет ли разбор квалификационных раундов?
15 лет назад, скрыть # |
 
Проголосовать: нравится -6 Проголосовать: не нравится
Мне уже можно книгу писать: "самые тупые ошибки, допущенные при решении задач". Как можно было поделить 200000 на 30 и получить <100? В итоге wa17 из-за того, что массив слишком маленький. *WALL*
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Content of the article contains small typo in link to the time 
(...?day=6&...) but should be 
(...?day=20&...)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
How Solve Problem B ?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Find any set by intersection 1st union with others.
    After that check all unions that intersect this set & write out union wthout this set

    Don't forger to if n=2
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Let's a[i][j] := amount of strings(in input) where i and j are exists.
    In case n > 2 a[i][j] = n-1 if and only if i and j were from one set. Find a for all 1 <= i, j <= 200, and you can find answer easy!
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    for each number from 1 to 200 calc FIRST and SECOND
    FIRST - input line in which was first occurence of this number
    SECOND - input line in which second occurence of this number

    two number belong to one answer where they have equal FIRST,SECOND pair
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    simple :)

    1. u have not used points  used[1..200] all set to 0//not used 

    2. read n - amount of sets,set must out sets o=n;

    3 while readind n*(n-1)/2 pairs of sets do this:{ line number is j

    set setA=empty; setB= empty;

      read k-amount of points 

       for all k points p in this line j do {

        if used[p]<0 continue;

        if   used[p] ==0 {is notused mark used[p]=j//it means that number p  fist time in j line}

        else if used [p]>0 {it means that in j line we get set   

          with  p points in 2nd time so we can solve what set has p point 

         if (A.empty||used[A.top]==used[p])A.push(p)   else B.push(p)

    }//end for k points in j line

    if(not empty A){out(A);mark all p in A used[p]*=-1;o--} 

    if(not empty B){out(B);mark all p in B used[p]*=-1;o--}

    }//end for j lines of n*(n-1)/2 lines of pairs sets

    test if (o>0){//o==2

    cose we have last readed line like k a1 a2 .... ak

    we make hand made out like

    line1: 2

    line2: 1 a1

    line3: k-1 a2 ... ak

    }

    thats all 

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

      loose time cose this solution solv not only problem B but problems where not all pairs n*(n-1)/2, but that where each sets no less 2 times so this can solv:

      4

      4 1 11  2 22

      4 1 11  3 33

      4 2 22 4 44

      4 4 44  5 55

      4 5 55  6 66

      4 6 66 3 33

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

    It's al MUCH MUCH simpler.

    Read the first of n*(n-1)/2 union. Remember the first element of it - F.

    Then read all other unions and save only containing this F.

    We will get n-1 unions U1, ..., Un.

    Then intersect U1 and U2, we will get A0, that contains F.

    After that subtracting A0 from every Ui, we will get Ai.

    And A0, ..., An-1 are the answers. :)

    If I'm not mistaking, it could be realized with complexity O(n*m) where m is the number of different elements, so about const*200*200 solution.

    And don't forget about 2.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +3 Проголосовать: не нравится
      I don't think that your solution is simple. It's better to build a graph with M verticies (up to 200 verticies). Where each vertex is assigned an unique value of Ai.
      For any edge (u, v) of such graph we should count its weight as the number of times the values u and v appeared in one union. If this number is smaller than N - 1 we should ignore this edge in our further solution. And than it's very simple to find all the connected components. Solution requires O(M2) time and O(M2) memory.
      Of course, we should carefully deal with N = 2 again.
15 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится

Вот и завершилась квалификация... и у меня возник вопрос по задаче D.

Может я конечно не правильно понял условия, но 7 тест у меня вызвал сомнения:

7
100 1 2 3 4 3 2
Вывод
106
3 7
4 6
5 1
2
Ответ
107
2 3
1 5
4 6
7

мы же поидее можем запулить очередь так, как показанно в выводе? (в строке по условию задачи порядок вывода чисел не важен)

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

"они разделили 499-501 места с результатом в 1192 балла"
это же места с учетом участников вне конкурса, их же вроде не нужно считать, или я не правильно понял идею участия вне конкурса?

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Да, да. На самом деле проходной балл 978 и разделии его Hossein_Hima и ss.nurboolean на 499 местах.

    P.S.: Да, я снова капитан и могу капитанить дальше)
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Каждый после раунда посмотрел из интереса, сколько же надо было баллов чтобы пройти. Конечно же, я запомнил примерно чему было равно это количество баллов. Не трудно было заметить этот fail в посте, меня это повеселило. Но еще больше меня удивило то, что там указаны цвета на момент начала раунда. У двух участников из трех они изменились после раунда (кстати и оставшийся буквально ногтями зацепился за оранжевую зону).
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Спасибо за поправку. fixed.
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +1 Проголосовать: не нравится

возвращаюсь к комменту diogen'a (http://mirror.codeforces.com/blog/entry/1886#comment-36385)

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

исправил, пересабмитил,  полное решение

но суть не в этом. я не могу понять, как такое решение все же смогло одолеть 100+ тестов.. для меня это большая загадка..

(задача C имеется в виду)

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

You count also out of competition participants. There is exactly 500 advancers from this round and the border is 978 points.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Can anyone explain how to solve E ?
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится +5 Проголосовать: не нравится

    First, sum the areas of the shadows from all windows, and then subtract the areas counted twice.
    For the first part, note that you may count each window (and both lightbulbs) separately, and each window gives a trapezoid shadow.
    For the second part, you will each time only need to intersect two such trapezoids -- one from the upper bulb and one from the lower. It may look even easier if noticed that you may intersect triangles, not trapezoids.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
I noticed n=2 when I read the B again, and then I almost Hack all others in my room.
However, the origin set in B could be 19900, and I announced 200....
15 лет назад, скрыть # |
 
Проголосовать: нравится +13 Проголосовать: не нравится
I thought that problem D was really pretty, how did you guys do? I did a O(n^2) memoization dp[i][j], where 'i' and 'j' were the first two guys at the queue, because if you notice, the third guy's index will always be j+1, and realizing that can give you a simple memo coding.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Will be a posibility to compete out-of-competition, for those who are not qualified?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
спасибо за интересные задачи. первая улыбнула
15 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится
да туповат я, что есть - то есть... а задача правда была забавная...
и похоже Вы, Павел, становитесь моим фанатом, раз мониторите мои участия в турнирах
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -18 Проголосовать: не нравится
    Конечно, как раз хочу получить Вашу фотографию, чтобы напечатать ее у себя на футболке. На самом деле я просто нажал на профиль и посмотрел место, которые Вы заняли (там на точку на графике можно навести). Там больше 1300 число было. Ежу понятно, что второй задачей тут и не пахнет :)
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +4 Проголосовать: не нравится
      Павел, мне кажется, что вы слегка надменны... относитесь к жизни проще и люди к Вам потянутся)
      • 15 лет назад, скрыть # ^ |
        Rev. 3  
        Проголосовать: нравится +3 Проголосовать: не нравится

        Вот в том самом моём эпичном треде, в котором никому не рекомендуется писать 341-й коммент (сообщество загрызёт), Павел сказал, что согласен со мной на 200%. Я ещё тогда удивился, к чему такое преувеличение, ну написал бы, что на 100%. А потом понял, что нет, он-таки именно на двести :)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится -10 Проголосовать: не нравится
    Думаю, Павел хотел сказать: "Даже моя девушка решила больше")))
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +5 Проголосовать: не нравится
      ну я думаю, что Павел если захочет сказать то он скажет сам.

      и еще мне почему-то кажется, что если кто-то ниже Вас в рейтинге, то не стоит акцентировать на этом внимание в каждом комментарии... я просто написал, что мне нравится задача (если быть точным описание к ней) и не пытался ввязываться не в какие дискуссии...
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Ну я решил тебя подколоть не потому, что ты ниже в рейтинге. Иначе я бы просто опух тут всех подкалывать, кто хотя бы цветом хуже. Мне просто твое сообщение напомнило что-то вроде "thanks to admins!!!111 server is so cool!!1 respect!!1!1" (специально ни одной заглавной буквы не поставил). Ну как-то решил понять причину такого запоздалого восхищения.