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

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

Приветствую всех на Codeforces Beta Round #72.

Авторами этого соревнования являются: Холкин Павел, Николай Кузнецов и Калужин Александр. Соревнование проходит одновременно в обоих дивизионах. Вам будут предложены задачи различного уровня сложности, и мы надеемся, что каждый участник справится со всеми трудностями и решит как можно больше задач.

Мы выражаем благодарность Артему Рахову и Павлу Кузнецову за помощь в подготовке раунда, Марии Беловой за перевод условий и Михаилу Мирзаянову за прекрасную систему.

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

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

Забавным совпадением является, что раунд совпал со знаменательной датой - пятницей тринадцатое. Надеемся это никого не смутит и все останутся довольны =)

Всем желаем удачи и высокого рейтинга =)

Upd: Контест завершен. Поздравляем победителей раунда:
в дивизионе 1 - tourist
в дивизионе 2 - StelZ40494

Добавлен разбор задач. Он состоит из трех частей: первойвторой и третьей =)
  • Проголосовать: нравится
  • +93
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Всем удачи сегодня :)

Мне кажется, или Валерий - совершенно новый персонаж на Codeforces?
  • 14 лет назад, # ^ |
      Проголосовать: нравится -20 Проголосовать: не нравится
    Где ты, Валера, где? Голос подай!
    Где ты, Валера, где? Не пропадай!
  • 14 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Он не новый=) он уже появлялся ранее, например в раунде 33, где я тоже был одним из авторов.
14 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
Будут ли такие задачи (задача), которые относятся к обоим дивизионам ??
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Такие будут. Но также будут и различные задачи для разных дивизионов.
14 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Случайно дважды ответил
14 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
напишу сюда

найден следующий баг: перейти на вкладку любого соревнования можно по ссылке http://mirror.codeforces.com/contest/#контеста, несмотря на попытку скрыть их из вкладки с соревнованиями

более того, можно открыть любой контест и что-то послать, например, как я сделал сейчас, сабмит #446353
  • 14 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    Думаю, что это нужно было написать штабу в личку, а то многие, кто не знал могут злоупотребить этим читом :)
14 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
Надо заметить, что, хотя зарегавшихся много меньше, чем на яндекс, все равно много больше чем обычно.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У меня вопрос: пост появился 52 минуты назад, но заходя на сайт, пятнадцать минут назад, его не было, почему?
14 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
опять в задаче C "феерическая хренотень" (с) =/
14 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Тормозит открытие всех страниц на последних минутах.

Баг: попробовал нажать "Взломать" раньше, чем догрузился код, и вместо страницы взлома получил такое сообщение (явно не по делу):

Content on this page requires a newer version of Adobe Flash Player.

14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
У меня такое предложение. В моей комнате был человек, у которого была такая история по В:
00:53:47  Полное решение [претесты] → ***
01:07:18  Решение взломано участником ***
01:10:34  Превышен предел времени на взломе 1 [взломы]
Если бы это был я, то при взломе просто бы отобразилось, что решение взломано, и я бы полез искать ошибки в коде, вместо того, чтобы оптимизировать алгоритм по времени. Может следует показывать, с каким вердиктом был сделан взлом?
  • 14 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится
    ну сейчас это можно просмотреть в разделе взломы, хотя да, видеть в алерте удобнее
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ээм? Там же разница в 3 минуты. Это TL такой - 3 минуты?

    Поясню, что, по всей видимости, произошло. Кто-то послал решение, оно прошло претесты, затем кто-то послал взлом и решение упало. Затем первый кто-то послал новое решение (кстати, не факт, что оно изменилось), оно опять прошло все претесты но упало на взломе. Причем, взлом наравне с претестами несет информацию о причине неудачи (в данном случае TL).

    Итог: если вы хотите получить вердикт на взлом - пожертвуйте еще одной посылкой (и 50 баллами).
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
По-моему, раунд Div-2 был слегка имбалансным на взломы :)
  • 14 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    да, особенно это отразилось на тебе :)
    +21 / -1   -   печалька же :(
    • 14 лет назад, # ^ |
        Проголосовать: нравится +7 Проголосовать: не нравится
      Ну я там глупо ошибся.
      Вообще есть мнение, что еще штук 5 решений в моей комнате свалятся, но мне лень было вникать в код.

      Вообще очень поразило большое количество ошибок в Div-2.

      В задаче B десяток людей считало ответ в int-ах. Интересно, им никак не намекнуло последнее предложение условия насчет вывода 64-битных чисел в C++?
      И был один epic-код, куда же без них?
      long long ans = 0;
      ...
      cout << int(ans) << endl;

      В задаче C очень много решений за O(NM). Просто делаем тест, где ни один выстрел не попадает в цель.
      И еще один веселый взлом:
      int change(int a) {
        if (a >= 0) return a;
        else return (-a) + 10000;
      }
      Сделал бы, я не знаю, +20001 хотя бы. А так уже готов тест с x=15000 и x=-5000 :)
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        да, С я тоже большим тестом ломал.
        только вот под конец все тормозило и каждый взлом занимал много времени
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А я лично ламал на том что :
        long long ans  = 0;
        int cnt = 1;
        ///kod
        ans+=cnt*(cnt+1)/2;
        Вот что означает не знание языка в идеале! 
        • 14 лет назад, # ^ |
            Проголосовать: нравится +6 Проголосовать: не нравится
          я тоже на этом ломал, но это очевидная мелочь, а никак не "в идеале" =)
        • 14 лет назад, # ^ |
            Проголосовать: нравится +10 Проголосовать: не нравится
          Ой, подскажите тогда пожалуйста почему плохо кидать исключение в конструкторе объекта, а то я что-то запамятовал...
14 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Большое спасибо взломщикам.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
System test is too slow! Are you facing problems?
14 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Локально у меня D проходит тест за 2.3 с, у тут ТЛ. Обидно
Правда я так и не могу от запуска добиться сколько это дело работает на сервере - он выводит "Исполняется..." и больше ничего
  • 14 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    У меня сабмит в дорешивании в очереди висит уже 10 минут. Наверно у тестера перерыв.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    На сервере 3.4 с
    Обидненько
14 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
New here,and ask a question.
Where can I see the changes of my rating in a picture?
Please help me. :)
14 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Hi,

May I know how do I access the full testcase for testcase 56 problem C? The testcase got cut off halfway :S
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Practice room for div2 already please!!! I am dying here to see why my B failed on test case 32.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Problems were really nice and varying in ideas and difficulty! At least for div 2 :)
14 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
По C у жюри очень слабые тесты, моё решение (которое в 50 раз медленнее нормального) прошло. Более того, судя по логу тестирования максимальное время его работы меньше секунды, причём я знаю очень простой тест, на котором оно работает 6 секунд на сервере codeforces. Видимо, цели убить все эвристики с отсечками у авторов не было =)
  • 14 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    На моем компе на макс. тесте решение работало 40 секунд. Я долго не решался его посылать. Когда послал - удивился, что сработало за 1 секунду.
    • 14 лет назад, # ^ |
        Проголосовать: нравится +12 Проголосовать: не нравится
      ну видимо не получилось расмотреть все макс тесты) разные решения - разные макс тесты.. все решения перебрать видимо не сумели.Мы извиняемся, постараемся больше не пускать такую лажу)
      ну я могу сказать еще одно - радуйтесь) а лучше пишите оптимальные решения)
      • 14 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Да, при подготовке таких задач самое трудное - придумать весь возможный бред и сделать тесты против него. По идее взломы должны как-то спасать ситуацию, но на практике никто не будет вчитываться в такое решение и придумывать макстест, т.к. более выгодно открывать массово сабмиты по тупым задачам в поисках переполнения int'а.

        А в остальном проблемсет очень понравился - делайте ещё ;)
14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Почему в контесте Div-2, уже довольно долго не может закончится тестирование, которое давно стоит 100%?
14 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится
In div 2 it is showing "system testing 100%" since long time. It should show "Contest Finished" now. Did something go wrong ?

14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
А можно где-то посмотреть, что такое "тест 39", "тест 25" и т.д. (не мои решения упали, чужие)?

Или как другие взламывали можно увидеть?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Можно зайти во вкладку взломы, там будут взломы
    Можно кликнуть по номеру посылки, там протокол тестирования.

    Возможно еще нет, но появится чуть позже
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Спасибо.
      Раньше смотрел - не было протокола, а просто подождать надо было.
14 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Statements were needlessly lengthy.
14 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

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

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Обычно не закрывается, просто во время последних соревнований была высокая нагрузка на сервер, поэтому временно отключали
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я не понял, а куда делся график участия на контестах в профиле? или он только у меня не отображается
14 лет назад, # |
Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

У меня он что-то давненько не отображается, вроде и часа за 4 до контеста не отображался этот график( Да и неделю назад тоже не виден был...
14 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

Rating graphs disappeared?!
They are back now.
14 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Графики на месте!
14 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Когда будет разбор? 
14 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
Is that normal: tourist made his last hack after 2hrs?
02:00:32  D  Successful hacking attempt of portal
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я честно говоря не понял маленького числа решений по Е - там же стандартная идея, которая недавно была в Vekua Cup Task A/Mow Lawn с USACO, с минимальной вариацией
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    да я тоже не понял) обидно было - задача была готова до кубка векуа,но после него все равно рискнули дать, потому что такие задачи не выкидываются. ну вроде кубок векуа не сильно повлиял на резы)
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      На самом деле в последнее время задачи как-то сериями идут - всем одинаковые идеи в голову одновременно приходят. Еще, например, задача про выделение реберного подграфа со всеми нечетными степенями разом была на USACO и Codechef. Причем на Codechef ее тоже почему-то очень плохо порешали
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        ===На самом деле в последнее время задачи как-то сериями идут - всем одинаковые идеи в голову одновременно приходят.

        Новая книжка вышла где-то.
        Помню когда появился Кормен, так на все олимпиадах толкали задачи из Кормена :)
14 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
Мда, тяжко писать контест, когда в твоей комнате бухают %) Собственно, в прошлый раз было точно так же, но там это было не слишком критично из-за инфляции рейтинга.
Надо как-то хорошо раскачивать навык концентрации. "Мы должны уметь программировать в любых условиях"©
  • 14 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится
    ===Мда, тяжко писать контест, когда в твоей комнате бухают %)
    я сначала когда прочитал, подумал что это про комнату на codeforsec и долго думал что значит фраза "в комнате бухают" :)
    • 14 лет назад, # ^ |
        Проголосовать: нравится +4 Проголосовать: не нравится
      Нет, в этом случае как раз хорошо было бы - фрагов бы много насобирал.
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Да ладно, не так тяжело это делать ) надо уметь отключатся от окружающих
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Умел когда-то полностью отключаться от внешнего мира, когда жил с двумя соседями, они не стеснялись разговаривать и слушать музыку и к ним регулярно заходили гости. Один раз даже пришлось с командой писать тренировку, когда там толпа в пять человек праздновала день рождения брата соседа, который с приходом полуночи перетёк в мой собственный (хоть я об этом и забыл).
          А вот последние два года в этом отношении жилищные условия лучше, вот и привык к хорошему. Но иногда бывает ВНЕЗАПНО %)
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
когда будет разбор?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hi, I was looking at some of the solutions for 83C Track.  There were two very fast solutions (runtime ~ 50ms).  I checked them out and they seems to be doing fairly straight forward path search.  Any ideas on why they are so much faster than the other solutions (which are also ding path search)?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hey, I have solved C but on pretest No 1 I got WA, even on local machine it worked. I'm using C#. My code is here http://codepaste.net/pzyu3k. On first test case locally I get correct answer but on Codeforces site I get 0 -1 -1 -1. Is it BinarySearch broken on Mono or something else? Can anyone point it out?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hi,

May I know how should problem D be done? Here are some ideas I have.

1. K must be prime. If not, the number will have some divisor smaller than K.

2. Suppose K >= 10000. Then, suppose X is a valid number. Then X/K <= 2*10^5. We can check the factors of each X/K up to min(K,sqrt(X/K)). Then the complexity is thus on the order of 10^7.

3. Suppose K <= 10000. I was thinking of applying PIE, but I am not sure how to compute that in a fast manner. :S

Thanks in advance for your help!
  • 14 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    This problem has recently appeared in a harder version in the Facebook Hacker Cup, you can see a small discussion in the main thread of the Hacker Cup in the TC's forum.

    Also, there's an old editorial for the problem SquareFree

    The main idea is the following:

    As you said, assume K is prime, or the answer is 0.

    If K > 45000, then the answer can only be 0 or 1. 1 in the case a <= K <= b.

    If not, you may try the inclusion exclusion principle in the following way:

    Add all divisors of K (b/K - (a-1)/K)

    subtract all divisors of K*2, K*3, K*5... (last prime less then K)*K. This means all combinations of K with another prime.

    Add all divisors of K*2*3, K*2*5, ... This means all combinations of K with another two primes.

    Basically, all combinations with an odd number of other primes will be subtracted and all combinations with an even number of other primes will be summed back.

    Why is it possible to test it? Because 2*3*5*7*11*13*17*19*23*27 > 2*(10**9). This means you can cut your search in the worst case having the maximum of 10 primes.

    This recursive function will do it:

    Assuming primes has the prime list generated and that kp is the index of the prime K.

    void go(ll val, int p, int sign) {
      if (val > b) return;
      res += sign*(b/val - (a-1)/val);  
      while (p < kp) {
        go(val*primes[p],p+1,-sign);
        p++;
      }
    }

    initial call: go(k,0,1)

    Unfortunately I didn't realized my first condition, of having K > 45000 and answer 1 =/, during the contest.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
System Testing is too slow. I coded for 2 hours and waited to see the result for another 2 hours. Hope the performance of the system can be improved. 
14 лет назад, # |
  Проголосовать: нравится +25 Проголосовать: не нравится
For Div. 2. : Doctor, is he male or female?
important for him. Since the doctor works long hours and she can't get distracted like that after all, she asked you to figure it out.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
If someone can tell me some specail tests about problem c...
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is the editorial out yet?
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Просьба зарегистрировать меня на Яндекс раунд 1
13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Can somebody explain part of the solution to problem C - track? I would just like to know how to find the lexicographically smallest shortest path from S to T, when you have fixed set of letters that you can use. I have translated version of the russian analysis but I don't understand it.


Edit. Finally, I managed to solve it.