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

Автор ZhNV, история, 11 лет назад, По-русски

Привет, Codeforces!

6 октября 2015 года в 19:30 MSK состоится очередной раунд Codeforces #324 для участников из второго дивизиона. Традиционно, участники из первого дивизиона приглашаются поучаствовать в соревновании вне конкурса.

Хотелось бы сказать большое спасибо Zlobober (Максиму Ахмедову) за помощь в подготовке задач, Delinur (Марии Беловой) за перевод условий на английский, MikeMirzayanov (Михаилу Мирзаянову) за системы Codeforces и Polygon. Это мой первый раунд на codeforces, и, надеюсь, что не последний.

Участникам будет предложено пять задач и два часа на их решение. Разбалловка будет объявлена позднее.

Все герои задач имеют своих прототипов — моих друзей, знакомых, родных, которым и посвящается этот раунд.

Желаю удачи и высокого рейтинга!

UPD: Разбаловка стандартная 500-1000-1500-2000-2500

UPD2 Раунд завершен, всем спасибо за участие!

Поздравляем победителей!

1). Siunaus

2). aasddf

3). M_H_M

4). lal

5). femsub

Разбор

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

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

Автокомментарий: текст был обновлен пользователем ZhNV (предыдущая версия, новая версия, сравнить).

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

Hope it will be a great Round :-) Happy coding :-)

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

Hope it's another interesting round. Good luck to all :)

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

I think clear problems with no story are better because there are many coders at codeforces that their main language is not english or Russian

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

Best wishes to ACM ICPC — 2015 regional/sub-regional participants for their upcoming regional/sub-regional contest and congrats to those who already manage to qualify for ACM-ICPC World Finals 2016 — Phuket :)

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

"The scoring distribution will be announced later."
So mainstream ;)

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

Все герои задач имеют своих прототипов — моих друзей, знакомых, родных, которым и посвящается этот раунд.

Как скучно...

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

Меньше, чем раньше . . . :)

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

So much grey。。

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

Lots of down votes here :D :v

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

Заметили? Минусуют одних серых-зеленых-синих, явно же по цвету!

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

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

Желать удачи всем — бессмысленно. Но пусть тебя, дорогой читатель этого поста, посетят вдохновение, пусть твои пальцы порхают над клавиатурой, как синицы в небе; пусть код получается с первой компиляции правильным, пусть идеи решений задач мгновенно настигают и каждый нюанс каждой задачи пусть сразу оседает в твоей голове, не только защищая от хитрых тестов, но и подготавливая персонально для тебя целый ящик со взломами. Удачи тебе, дорогой читатель, и хорошего настроения!

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

    В первый раз — приятно, Спасибо, хз)

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

    Сам написал? Если да, то круто.

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

      Мой друг. Конечно, сам.
      Ну сам подумай, кто посмеет,
      Вопреки вышестоящим минусам,
      Писать о том, что смысла не имеет?

      Ну сам подумай, кто еще
      Будет писать о неизвестном чуде,
      Когда у всех вдруг загорится голова,
      И все задачи все сдадут за полчаса?

      Такого ведь, как автор сознает, не будет никогда.
      А, если и случится чудо спорадически,
      То у координатора поседеет голова.
      (за ритм извиняюсь — нет похожих слов, короче синтаксически)

      Так что, прости, но все, что я писал,
      Оно случится только на бумаге. Но главное я сделал: плюсиков набрал
      А, может, и настроение поднял?..

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

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

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

Gayle Laakmann live session or this contest :D

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

спасибо

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

Пресвятая шоколадница, тут просто кладбище комментариев!

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

All participants good luck.

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

Автокомментарий: текст был обновлен пользователем ZhNV (предыдущая версия, новая версия, сравнить).

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

The scoring distribution will be announced later later later late lat la l..........

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

where is scoring distribution ??

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

Auto comment: topic has been updated by ZhNV (previous revision, new revision, compare).

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

Ответ по модулю в Div 2 B, серьезно?

(Для справки: люди, не знакомые с олимпиадами, или только начинающие знакомиться, не знают, как это делать. В лучшем случае они используют Python / Java / C# с их BigInteger-ами, а если они пишут на другом языке — не сдают задачу. Проверено на локальных контестах в университете)

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

    Зато все кто не знал как считать ответ по модулю — узнали. Что в этом плохого? По-моему наоборот здорово.

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

      В том, что они потратили на это 1 час и 50 минут контеста. Не надо так издеваться. В одном из прошлых раундов вот дали два указателя, это еще хуже было. Тебе было бы приятно подолбаться в эту задачу, если бы ты был совсем еще новичком? На A, B div 2 любые алгоритмы и олимпиадные приемы противопоказаны.

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

        Чтож тогда по твоей логике в div 2 A нельзя задачу на цикл давать? Чтобы совсем новые участники не "долбились" в нее? Как развиваться вообще тогда?

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

          Цикл — это конструкция языка программирования. Так что его давать можно. А два указателя, вывод ответа по модулю, динамика, можно много чего еще назвать — это олимпиадные приемы. Если давать это в ранних задачах Div 2, куча народу будет сидеть без дела, а после контеста еще подумает, а принимать ли участие в следующем раунде.

          Мне кажется, развиваться на начальных этапах правильно с помощью архива задач и тренера/друзей/статей, которые расскажут что-то новое. Но не во время контеста! Ну дали тебе задачу с двумя указателями, ну написал ты два вложенных for-а, многому научился? Многим интереснее писать раунды, ведь это PvP и в общем случае весело, однако такие задачи, как сегодняшняя B, отбивают желание участвовать в олимпиадах. Поэтому надо делать задачи как можно более лояльными к новичкам.

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

            В общем я считаю, что если автор считает нужным дать ответ по модулю в div2 B — пусть дает, это его право. А так как с тобой к консенсусу мы не придем, я завязываю)

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

              Ну ок. У тебя просто ферлоновские взгляды в этом вопросе, у меня нет) А плюсуют пока обоих.

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

                Вот что точно нужно было сделать, так это дать ещё один тестовый пример с переполнением. Это было бы более лояльно.

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

                Ничего себе, уже не плюсуют. Но у меня рейтинг выше! Huyum_nik, твоя теория терпит крах!

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

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

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

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

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

        Вообще-то теория сравнений ещё в советской школе изучалась на факультативе в 7 классе.

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

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

    По-моему на позицию Б див2 лучше подойдет реализация на 2 цикла, возможно с каким нибудь крайним случаем.

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

По-моему, если вы хотите сделать своих друзей и родственников героями задач, то не делайте это так. О самих друзьях и родственниках сказано только в начале каждой задачи по одному вводному предложению, которые всё равно никто не читает, и в названии, в результате чего по названиям задач невозможно вспомнить, о чём была задача.

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

At D I output

3 2 2 23 and I have wrong answer on pretest 1, where n = 27. Why?

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

at problem d i output 3

2 2 23 i have wrong answer on pretest 1 , which has n=27 why? LE : my bad, sorry

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

z

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

B — What's wrong with the solution 3^(3n) - 7^n ?

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

Все заметели, что в топе стало меньше нерейтинговых))

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

Problem 2: Just 3^(3*n)-7^n ;))

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

dafuq is C pretest 9?

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

How to solve problem E ?

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

How to solve D?

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

Problem A and Problem B is a joke in Python

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

What is The Solution Of div2 E? I tried to find symmetric group, but it seems hard to calculate the minimum step to sort the permutation

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

How to slove D? Damn I spend all contest to it

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

BTW, check this problem: http://acm.timus.ru/problem.aspx?space=1&num=1356. It's almost the same as the problem D, just a bit harder (but the solution for 1356 works here in problem D).

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

C pretest 9 ahhhr.

C looks straightforward but did not work out.

My thought.

  1. Count the number of distinct chars in s1 and s2 and tag appropriately.
  2. We can sort based on frequency.
  3. Pick first n1-t and n2-t
  4. Try to find t chars in Universal set but not in union of s1 and s2.
»
11 лет назад, скрыть # |
 
Проголосовать: нравится -15 Проголосовать: не нравится

System rating finished

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

Hello! I have a question at the second problem, Div 2. During the contest I printed(put(3,3*n)-put(7,n))%m; and i have got wrong answer on test 7. Now I am printing (put(3,3*n)-put(7,n)+m)%m; and I have got accepted. Why the second method works? Thanks!

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

For D, I just generated primes upto 10^6 and tried to find the answer with simple check. And it passes. Why does it pass?

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

Очень радует, что в сегодняшнем раунде в Топ-40 находятся только пять "нерейтинговых восходящих звезд".
Цветовая революция пошла на пользу :)

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

    Возможно, многие из них — фейки красных. Те самые, что когда-то давно за один контест стали фиолетовыми.

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

I don't understand.Why 2000 points for problem D??? :o :o :o It was far far easier than B and C.

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
swap(C, D);
»
11 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

why this submission get WA?

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

how to solve C ?

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

just added the condition of a+b+c=n and D passed :( :( :( :(

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

Автокомментарий: текст был обновлен пользователем ZhNV (предыдущая версия, новая версия, сравнить).

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

Auto comment: topic has been updated by ZhNV (previous revision, new revision, compare).

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

i forget to say :thanks for no delay

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

Some help on E? I can find the minimum cost but I cannot restore the swaps. I thought about going from left to right and if we see an element which is not on its place (it must go to the right) then let's say his position is i and it must go to position j. Let's first handle all elements that are greater than Ai in the interval [i+1,j] and then somehow solve for the current element. Can you please give me a hint?

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

    can E be solved using greedy method ?

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

      Well, the first part (minimum cost) can be called greedy, I guess. The idea is to find for each number its position in B. Then if we want A to become B, that means that some elements will go to the left and some to the right. We can make the observation that we need to consider only those elements which go to the right. Let's assume that after considering them, there is an element that must go to the left (if there is more than one, consider the leftmost). Moving it to the left means moving one element to the right. A contradiction! So if pos[k] is the position of the element with value k in B, we add to the answer max(pos[Ai]-i,0) for each i.

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

      My solution is actually greedy. What I do is in each step I have a vector that keeps all the numbers that have to go to the right (I iterate the numbers from left to right) and whenever I find a number that has to go to the left I just swap them and move the index of my iteration back so I can start from the number I moved.

      Before that I change the permutations so the second permutation is 1 2 3 ... N and the first one changes so it's the same problem but having to move a permutation to the sorted permutation.

      Let's see an example:

      4 4 3 1 2 1 2 4 3

      The problem is the same as solving

      4 3 4 1 2 1 2 3 4

      Now I start with 3, it has to go to the right so my vector is (3), then 4 has to go to the right so my vector is (3,4), then 1 has to go to the left so I swap 1 and 4 now it's

      3 1 4 2

      And my iterator moves back to where the 1 is, now 1 still has to go to the right so I swap 1 with 3 that is the top of my vector (or stack if you want to see it like a stack). Now it's

      1 3 4 2

      Then I continue iterating, 1 has to stay where it is and the vector is empty, then 3 has to go to the right, 4 has to go to the right too, and 2 has to go to the left, and when I analyze 2 my vector is (3,4) so I move 2 to the left and it's

      1 3 2 4

      And in the last step I change 3 with 2 so it's

      1 2 3 4

      And it finishes the process. This is a greedy approach and it's similar to selection sort I think.

      I start with 4 (it

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

    You can maintain an ordered set (balanced binary search tree) of all elements that need to go to the left (call this set L), and all that need to go to the right of the permutation (call this set R).

    In each iteration you perform one swap, that involves swapping the leftmost element in L with its closest element in R to the left (it clearly has to exist). If you store both the elements and their positions, you can efficiently maintain this structure as you go along in logarithmic complexity.

    You may refer to my code: http://mirror.codeforces.com/contest/584/submission/13456405

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

    Consider the element that needs to go to the rightmost location. Lets say that element is in the ith position and needs to go to the nth position. Then, surely there must be an element from positions i+1 to n which needs to go to a position j where j <= i. If no such element exists, then there are (n-i) elements which final location is from (i+1) to (n-1), a contradiction! Find the leftmost element which matches this criteria using a pointer sweep and then swap it with position i then keep repeating until it is moved to its correct location. This is an O(n^2) algorithm.

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

Problem E : For the first time on codeforces, a solution didn't pass for me with cin,cout. My solution failed system tests after passing the pretests. And when I changed it to printf,scanf it passed. I think the problem setters should be careful the next time, as when crtical points and rating gets affected due to such reasons, it feels sad.

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

It is time to midnight,but still waiting for Rating.

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

MikeMirzayanov. When you declare a rating?

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

Happy New Year CF!!! wait(wow), rating still not updated?

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

Wow, my rating is changed to +0 :)

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

What is this?

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

Auto comment: topic has been updated by ZhNV (previous revision, new revision, compare).