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

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

Всем привет!

Совсем скоро, 11 апреля в 19:30 MSK состоится Codeforces Round #179, автором которого являюсь я. Это мой пятый раунд на Codeforces и я надеюсь, что не последний.

Спасибо Геральду Агапову (Gerald) за помощь в подготовке раунда и Марии Беловой (Delinur) за перевод условий на английский.

Настоятельно рекомендую прочитать условия ВСЕХ задач.

Разбалловка в первом дивизионе стандартная, а во втором: 500-1500-1500-2000-2500.

Gl & hf ! :)

Контест завершен. Надеюсь вам понравились задачи.

Победители в первом дивизионе:
1). marcina007
2). yeputons
3). gawry
4). KADR
5). enot110

Победители во втором дивизионе:
1). goie
2). Koblyk
3). Beriand

Идеи решений тут.

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

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

А какая разбаловка? Что-то давно не было динамической =(

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

I can't wait to participate in the contest!!!! I love codeforces!!!!

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

Good luck everyone

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

Less DP — more geometry!

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

Sereja рубит капусту на раундах codeforces

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

unfortunately I cant participate in this round but seems a great contest like all contest that Sereja have prepared.

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

good luck & good rating changes .

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

than contests author is Sereja my rating decreases, I hope that today this tradition will be destroyed;))))

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

Ignore this please. It wronged my meaning. . .

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

Where is score distribution?

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

а что означает Gl & hf ! :) ?

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

"I strongly recommend you to read ALL the problems" — it does remind me of problems with close difficulty :P

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

WTF?? В 1 задаче тесты из условия решение проходит, но при отправке — ошибка на 1 тесте! Разве при проверке первые тесты не такие, как в примере?

»
13 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится
Комментарий удален по причине нарушения правил Codeforces
  • »
    »
    13 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится

    ну не знаю. Я ломал у меня все было норм хотя и на хроме) И как по мне то лучше обвиняйте не КФ и не хром, а ваш компьютер.

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

ААААААААААААААААААА!!!!!!!!!!!!! Сидел писал два дерева отрезков, второй назвал также как первый, только добавил цифру 1. и все методы рекурсивные таким же образом назвал. В общем, спустя одну минуту после окончания контеста понял что я из всех методов для второго дерева отрезков, вызываю методы первого. Обидно блин! UPD: в дорешке решение зашло. вдвойне обидно.

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

Great contest. Good Luck

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

very good system test speed thank you codeforces

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

Thanks for ultra-fast system testing :)

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

Чёрт, с задачей С на 11 тесте прям аномалия какая-то. Сначала было написал функцию, которая б по заданному закону изменяла массив, потом уже всё в мэин засунул. В конце концов упростил уже до такой степени, что осталось 2 массива (1, с которым производятся операции, и 2, псевдодвумерный, где, собственно, хранятся цифры для операций) и несколько циклов, в которых, собственно, и производится прибавление чисел. И всё равно пишет, что превышено допустимое время! — Уже не знаю, что там ещё можно оптимизировать >.<

И кстати, если глянуть, практически все как раз на 11 тесте и спотыкаются, многие и на времеи, дык что ж такого они там нагородили? о_О

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

Эх, зря перепослал :( В системе не оказалось теста, который валил первое решение.

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

Very nice and balanced problem set...One of the best contest I have ever participated in...

Thanks

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

Блин, обидно, что занял не 74, а 73 место :(

Контест писал в 47ой комнате и занял бы счастливое 74 место :)

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

good problems.thanks.

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

Сегодня на задаче С я понял, что надо избавляться от взятия по модулю везде, где только можно) Вариант с Iters*(N^4) взятий по модулю — ТЛ11 Вариант с примерно Iters*(N^4/30) взятий по модулю — 0.061с.

Или я где-то втупил, и первый вариант зацикливало...

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

    По-моему у меня было как раз O(N4) взятий по модулю. Не упало.

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

      У меня изначально на каждой итерации N^4 было. Точнее, M^2, где M — количество валидных комбинаций из больших и маленьких людей. Т.е. в худшем случае M=(N/2)*(N/2). А итераций пускал 200) Т.е. это около 80 миллионов взятий по модулю.

      Но только что я вообще завис, так как нашел в своем последнем (АС) решении гениальную защиту от переполнения:

      if (ways[moves][l1-i][l2-j]>overfl)ways[moves][l1+i][l2+j]%=bs;

      (обратите внимание на знаки в скобках)

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

    У меня на позапрошлом раунде был прямо противоположный опыт — практически правильная Е свалилась из-за отсутствия модуля в одном месте.

    Теперь у меня модульная паранойя. =)

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

How to solve problem B (Div-2) ..?

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

Hello, during contest I had trouble with C and got TLE status...

I tried to use a map to group the number of times each query needed to be used and did a double for loop to update answer...

I also think that some sort of Range Query algorithm would help, but I can't yet implement one. Can someone help me and describe a possible solution for C Div2?

Thanks in advance,

Bruno

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

Thanks a lot for this hard contest. Both of my codes for problem A and C got "Pretest Past" but now both of the are Red! Also Thanks for this fast system test.

Now I get that an unrated user won the contest again!

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

Great contest!Thanks to Sereja and Gerald!

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

Nice problems overall, I really like the idea behind the solution of problem D, very clean, although it was an odd round for me I solved A, C and E.

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

I failed problem C (div 2) and I cannot find where my solution went wrong. (I'm using segment tree). May someone help me ? Submission.

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

My solution for problem A gets WA on the codeforces server but on my PC it's giving correct output for that case. Why is this happening? Could someone please help. Here's the code: http://www.codeforces.com/contest/296/submission/3511959

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

I tried to hack a code in problem C, which was plain brute force. I wrote a hack gen here but i got the error "FAIL Input can't start with empty line, but the first line is empty [validator wfval.exe returns exit code 3]"

Can any one tell the mistake so that I wont repeat it.

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

Ого уже и разбор есть!) Очень быстро сегодня и тестирование и разбор)

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

Tried to solve Div2 with DP lol. So much wasted time in debugging, and then saw the simple way :(. But this is one of those bad solutions that I am proud of http://mirror.codeforces.com/contest/296/submission/3514056

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

Div2 Problem C: I used the binary indexed tree approach...my code runs fine till testcase 11... Can any1 help me find my mistake? here's my solution http://www.codeforces.com/contest/296/submission/3512783

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

Thanks a lot for the contest! But:

Why didn't you make an illustration in Div 1 problem D?

It was annoying to read that text passage about sets/subsets, without an illustration showing what it's all about.

Even better (= more polite to contestants) would be to give a sample test like "3 3" or "2 3" and show (as pictures) all the valid caves in that pad.

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

could anyone please provide english version of the Ideas to problems page? If I click on translate button, only problem A is being translated to English, all other problems solutions are shown in Russian itself (they do not get translated). Thankyou.

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

Can anyone please explain the logic behind this solution of problem B of Div 2 ? I have having hard time understanding the dp state.

Thanks!

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

Can someone explain solution to probl C div 1 / E div 2 in more detail please ? Thanks!

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

    At first, note that we have only 2 type of people, let us call them "small" and "big" according to their weight. Assume some moment (state), then it can be defined by the number of "small" and "big" people on one shore and the position of the boat (the bank of the river it is adjacent to). Let the states be the vertices of the graph. It is understood that we can get from state to state with the help of the boat transportations. Therefore we have the directed (or undirected, it doesn't really matter) edge from one state to another if we can get from one to another by exactly one traversal. Obviously, the initial state is {0; 0; 0} (assuming we count people on the opposite bank, 0 corresponding to the initial bank, 1 — to the opposite), the final state is {n1; n2; 1}, where n1, n2 — the number of "small" and "big" people respectively.

    So the solution can be easily implemented by using breadth-first or any algorithm of finding the shortest path in the graph (because of quite small constraints). Moreover, you don't have to build the graph explicitly, you can do it implicitly (like me , for instance (: 3513759).

    The only thing you might still not understand is how to count the number of various ways to gain the minimal answer. Let us count in how many ways we can choose i people from x "small" ones and j people from y "big" ones. Obviously, that equals to C(x, i) * C(y, j), where C(n, k) = n! / (k! * (n - k)!). In such a way you can maintain another array that counts the number of possibilities and change it when you find the shorter path (assign the new value) or another path of the same length (add to the previous).

    Hope I made it at least a bit more clear to some contestants (:

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

      Great. Many thanks!

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

      Can someone please explain how we can have 72 ways for the following case?

      5 250

      50 50 50 100 100

      The minimum number of rides required are 3. My DP code(12225775) gives 46 ways and I have calculated it by hand as well giving the same answer.

      The possible moves are —

      1. Move 3 small people and bring 1 small person back — C(3, 3) * C(3, 1) = 3
      2. Move 1 large and 1 small and bring 1 small back — C(2, 1) * C(3, 1) * C(1, 1) = 6
      3. Move 1 large and 2 smalls and bring 1 small back — C(2, 1) * C(3, 2) * C(2, 1) = 12
      4. Move 1 large and 2 smalls and bring 1 large back — C(2, 1) * C(3, 2) * C(1, 1) = 6
      5. Move 1 large and 3 smalls and bring 1 small back — C(2, 1) * C(3, 3) * C(3, 1) = 6
      6. Move 1 large and 3 smalls and bring 1 large back — C(2, 1) * C(3, 3) * C(1, 1) = 2
      7. Move 2 larges and bring 1 large back — C(2, 2) * C(2, 1) = 2
      8. Move 2 larges and 1 small and bring 1 small back — C(2, 2) * C(3, 1) * C(1, 1) = 3
      9. Move 2 larges and 1 small and bring 1 large back — C(2, 2) * C(3, 1) * C(2, 1) = 6

      After either of these moves, all remaining on the left side are transported together to the right side in 1 ride.

      The total comes out to be 46. I am unable to find any other case. Can anyone please point out my mistake?

      UPD : Found the mistake. Was only considering cases in which a single person comes back.

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

Two coders form Poland in top 3! Nice to see :)

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

Screencast of me solving this round.

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

Could you please write an English solution?

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

I can't understand the statement of porblem c in div2 , what's the query stands for ? How to explain the sample tests ?

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

    Explanation of first testcase : Initially , the elements of array (a) are : a[1] = 1 , a[2] = 2 , a[3] = 3.

    We have three operations :

    operation 1 : 1 2 1 : increase every element a[i] with 1 <= i <= 2 by 1

    operation 2 : 1 3 2 : increase every element a[i] with 1 <= i <= 3 by 2

    operation 3 : 2 3 4 : increase every element a[i] with 2 <= i <= 3 by 4

    and three queries :

    query 1 : 1 2 , query 2 : 1 3 , query 3 : 2 3

    We have to execute the queries.

    by (a,b,c)--->(a',b',c') I mean the new state of the array after performing some operation.

    Query 1 asks us to perform operations 1 and 2. (1,2,3) ---> (2,3,3) ---> (4,5,5)

    Query 2 asks us to perform operations 1,2 and 3.(4,5,5)--->(5,6,5)-->(7,8,7)-->(7,12,11)

    Query 3 asks us to perform operations 2 and 3. (7,12,11)--->(9,14,13)--->(9,18,17)

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

What a pity! I just had a very little bug in Div.2 Prob A , or I would get a lot more Rating!

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

How I wish there is solution in English?

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

solution written in Chinese