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

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

Привет, Codeforces!

25 марта 2016 года в 16:00 MSK после продолжительного перерыва состоится очередной десятый учебный раунд Educational Codeforces Round 10 для участников из первого и второго дивизионов. Перерыв, конечно же, связан с большой плотностью соревнований и чемпионатов на Codeforces.

<То же, что и было раньше>

О формате и деталях проведения учебных раундов я писал уже ранее. Также об учебных раундах вы можете прочитать здесь.

Раунд будет нерейтинговым. Соревнование будет проводиться по немного расширенным правилам ACM ICPC. На решение задач у вас будет два часа. После окончания раунда будет период времени длительностью в один день, в течение которых вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования. Таким образом вы можете локально тестировать решение, которое хотите взломать, или, например, запустить стресс-тест.

Если у вас есть идеи каких-то задач, которые вам кажутся интересными, или может есть уже что-то почти готовое, что вы по каким-то причинам не можете дать на раунд (злой координатор сказал, что задача БАЯН), официальное соревнование (жюри не хочет переграбливать соревнование), можете писать мне.

Не стесняйтесь присылать простые (и даже очень простые) задачи (но обязательно интересные). Почти каждый раунд достаточно быстро выбираются кандидаты для задач C, D, E, F, а вот задача A обычно ставится самой последней, когда уже почти всё готово.

</То же, что и было раньше>

Теперь уже традиционно комплект задач был полностью предложен участниками сообщества. Задачу А уже в третий раз предложил пользователь unprost (ну сами понимаете не стоит ждать короткого условия :-)). Задачу B прислал пользователь Smaug. Задача C — ещё одна задача из комплекта, который прислали Bayram Berdiyev bayram, Allanur Shiriyev Allanur, Bekmyrat Atayev Bekmyrat.A. Задачи D и E были предложены Алексеем Дергуновым dalex. Задачу F ещё давно прислал Lewin Gan Lewin.

Благодарю их и всех кто присылает задачи или просто наброски!

Задачи D и E были подготовлены Алексеем Дергуновым dalex. Остальные задачи подготовил я (Эдвард Давтян). Хочу отметить генератор тестов по задаче E, который я писал примерно столько же, сколько решение задачи F. Спасибо Маше Беловой Delinur за проверку английских текстов условий. Задачи тестировали пользователи unprost, Smaug, Aleksa Plavsic allllekssssa, Алексей Дергунов dalex и Lewin Gan Lewin. Большое им за это спасибо!

На раунде вам по традиции будут предложено шесть задач. Надеюсь они вам понравятся!

P.S.: Мне очень нравится задача F, надеюсь увидеть Accepted-ы по ней.

Good luck and have fun!

UPD: Соревнование закончено. Разбор задач готов.

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

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

The time in this announcement may be wrong

In this announcement  In Contest section

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

On a completely unrelated note : Will my problems ever get considered, since it's been >3 weeks.

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

    Hey. You send me problems after ER9. It's the first round after that. You can be sure that I'll check your problems and try to take them.

    P.S.: Note the problems C, D, E, F was sent to me in January and February.

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

Finally an educational round! Also When will we be having round #346? It has been a while now

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

Thanks a lot Edvard for all your efforts . Just make the editorials a little detailed for problems D, E and F .

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

    I'll try to make editorials more detailed, but unfortunately you should wait until tomorrow. The programming camp in MIPT will start tomorrow and I'll go to Moscow right after the round.

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

This guy is using the chair wrong >.<

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

Did anyone else find the problem C really hard to understand? You didn't specify that (x, y) is a pair of indices. All the time I was thinking that it's a segment of numbers.

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

Почему нельзя писать дорешку сразу после раунда, как раньше? "Результаты заморожены, зарегистрируйтесь на дорешивание, бла бла бла..." Раньше можно было сразу взять и отправить код, который написал в последние секунды. Сейчас нужно ждать день, что бы просто дорешать задачи? И, кстати, очень интересно услышать идеи на Ешку. Просидел час, пытаясь пропихнуть что-то не сильно умное — не получилось.

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

На фазе взломов могут участвовать только те кто участвовали на раунде?

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

Was the open hacking phase started?

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

Please, use correct words in problem statements!

Intervals instead of segments in C confused me a bit.

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

I cant submit problems nor register for practice in this contest, is that disabled?

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

Not able to submit solutions after the contest has ended. Clicking on "Register for practice" is not working.

UPD: Registering for a virtual contest is working.

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

Please try to make good problem statements. A and C lacked too much clearity. Many people lost their points because of that. :)

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

Hacking phase has started, but not able to view others' solutions. Please fix it .

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

Unable to submit code.

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

how to solve E? it seems less harder than D(how to solve D by the way)

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

    For D,we can sort the intervals by end points.Then for the ith interval to count how many intervals lie completely within it we just need to count how many starting points for the intervals from the 1st to i-1th interval are greater than the starting point of the ith interval. This can be done using a Fenwick tree.

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

    Find all bridges and biconnected components of our graph. The answer is "YES" if there is a "good" edge inside some biconnected component on the unique path from biconnected component containing start, to biconnected component containing end.

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

      It's also yes if a good edge connects 2 components lying on that unique path.

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

        what is biconnected components of our graph? Is it same as Strongly Connected Components? I think SCCs are only defined for Directed Graphs otherwise the definition won't make any sense!

        When is the editorial coming up?

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

          An edge is a "bridge" if removing it disconnects our graph. Two vertices are in the same biconnected component if there is a path between them that doesn't use any bridges.

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

            Oh Okay I get it thanks ! I know about bridges but I hadn't heard about Biconnected components! All I need to figure out now is an algorithm to find out BCC.!

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

              you can modify Tarjan algorithm (which find SCC) to find BCC

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

            As far as I know the most widely used definition of biconnected component is that it is an articulation-point-free subgraph (eg see here). Wikipedia calls the components relevant to this problem 2-edge-connected components.

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

            Two vertices are in the same biconnected component if there is a path between them that doesn't use any bridges.

            Are you sure about that? In a non-simple cycle, we have no bridges, but we have articulation point. I think you meant articulation point.

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

              You destroy edges when you cross them, not vertices.

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

                I thought you were speaking in general about biconnected components, not just relevant to the problem :) Even if we destroy edges, a biconnected component will still have no articulation point, and bridges will form a separate block. I have just started learning about biconnectivity, so please excuse my mistakes.

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

                  Oh, I see the misunderstanding. Yes, I think I was using the wrong terminology here, but we seem to all be on the same page about the actual algorithm. Apologies.

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

                  Hi, could you suggest some good readings about biconnected components? I searched but could not find any.

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

      Or if a bridge itself in this path is a "good" edge.

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

I Can't Open Any One's Code, (Except Mine).Is This Happening To Me Only? :O

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

I have no idea about the russian version but the english version of nearly all problem statements had a lot of grammatical errors.

  • Problem A: doesn't make it clear whether we have to reach the exact height h2 at the time of observation or just reach that height before observation once(but this was kinda clear due to "apple" terminology)
  • Problem D: Use of the word line segment could have made it slightly less confusing on first read
  • Problem E: ...bridges are too old and destroying right after passing... Destroying the character? Or wut? xD
  • Problem F: ...circle of length m... radius? Diameter? Circumference?
  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I solved B,C,D and couldn't get A because I understood that I have to reach the exact height h2 .

    I sent a question and they didn't response to it .

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

      Similar thing happened with me. I wasted like 15-20 minutes on A, then did B, C, D, and later came back to A, asked them for explanation of a sample case, but they simply said "Reread statement", so I tried to think up something and did submit, but got hacked later :/

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

Hacking is going on, but i can't see others code !!! any explanation ???

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

I desperately want to submit a solution but I am unable to do so.should I have to wait another 23 hours??

please help.

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

Hacking phase was reconfigured. Now it works as expected. Happy hacking!

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

Помогите разобраться, почему такое решение по D получает TL 15 ? Отсортируем все отрезки по r и начнем их обрабатывать по очереди в порядке сортировки. Пусть у нас текущий отрезок это — (l[i],r[i]).Тогда понятно,что если есть какие-то отрезки которые лежат внутри этого то они встретились раньше этого.Тогда среди уже обработанных отрезков надо найти все которые начинаются позже нашего, то есть все такие j < i: l[i] < l[j] => отрезок j находится внутри i. Это можно сделать set-ом если по окончании обработки отрезка положить его левый конец в set. А все j можно искать upper_bound — ом. Сложность O(nlog(n)). Вот код : 16932603.

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

    distance за линию работает на не-random-access итераторах.

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

      А понял. Не знал об этом. А как "отремонтировать" решение?

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

      Есть что-нибудь, что работает за константу?

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

        Стандартные структуры данных не помогут. Самый простой способ — дерево Фенвика. Ну и плюс надо сжать координаты (т.е. сделать чтобы все координаты были от 0 до 2n-1, а конфигурация отрезков не поменялась)

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

very strange thing happened with D, 5*200000 sized array failed for segment tree (WA on test 16) while 6*200000 gets AC. I always thought 4 times the size is enough :(

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

I try to use my test generator but I get "Validator 'val.exe' returns exit code 3 [FAIL Expected EOLN (stdin)]" (I wrote "cout<<endl" at the end). Any ideas?

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

В задаче F ведь просто представим что муравьи проходят друг через друга и все! :)

Кажется, мне кто-то рассказывал, что она была в ШАДе.

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

I feel I'm the only Idiot who thought there will be a case where I should print "Impossible" in B ..

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

what would be the answer of A if input is: 500 555 6 1? If answer is 1, how?

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

    Hello man! :) Well first day it climbs from 500 → 548 (6*8) ... in the night, it slips back by 12 (so to 536) third day, it can climb up to 72 (6*12) which is enough :)

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

      that means answer is 0 as it will reach the apple before 2 pm next day ?

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

        exactly! .> "0" is, if it reaches apple during first 8 hours :) [2pm → 10pm]

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

          but in sample test case it gives wrong on "0".

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

            Sorry, not sure what you meant — so I'll try to comment all samples:

            A) 10 → 36 (+8*2) → 24 (-12*1) → 48 (+12*2) (== day 1)

            B) 10 → 18 (+8*1) (== day 2)

            C) a < b && it can't do it during first day (== -1)

            D) 1 → 41 (+5*8) → -7 (-12*4) → 53 (+12*5) (== day 1)

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

            okay. Got it!! Thank you for your reply. I did a silly mistake on understanding the question.

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

Lol in A I assumed boy returns to look exactly at 2pm on any day.

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

Is there any tutorial for this round?

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

I am sure I have solved a similar problem to D somewhere before.

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

In hacking with generator, what does the text field for generator parameter do? Is it just taking in some constants which we can easily specify within the code itself?

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

Problem A was very hard to understand for a poor english readers like me.

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

problem B:

for test case : 5 1 3 2 2 5

my output was 2 2 5 3 1

whats wrong in this? i think 2 conditions already satisfied in this .. please help me

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

    i dont think you understood the question properly the indexing should start from 1. so here 5 at an odd place is greater than 2 which is at an even place which is violating second condition

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

Post editorial, please or tell me how to solve problem C!

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

    here is the editorial

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

      still not able to realize the solution of problem C after reading the editorial, lol, can anyone help me

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

        Imagine you have intervals i..n for i = 1..n. Also nearest foe pair for this interval is ([j], [k]), were j and k are positions of numbers of the pair in the permutation — this means all intervals inside i..k-1 interval would be the good ones, and all inside k..n would be the bad ones, and you need the good ones to answer

        Yes, the statement was quite messy, and I've also spent some time to understand it

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

In E, I am struggling with proving why we must consider biconnected components, that is, why can't we use more relaxed constraints. Can anyone help me? I mean, we only need to make sure that there is a path between boy and dealer which doesn't use any edge twice, and the artifact edge is also in the path.

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

Поясните пожалуйста условие задачи С. Я так и не смог понять его.

Интервал (x,y) это набор (целых) чисел от x до y?

Что значит, что интервал содержит пару? — Он содержит оба числа из пары?

При чем тут перестановка?

И что значит что интервал не является корректным?

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

Can anyone explain why does a programmer need a headphone as shown in the pic ?

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

    Hello,

    A) Not do disturb neighbor, while listening to loud music

    B) Not to by disturbed by neighbor, who is listening to loud music

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

There is unexpected verdict for hack 222111 (not mine). Any updates on it?

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

can anyone tell me in the first case of C, why (3,4) is not counted? I think I had great trouble understanding the problem.

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

I am not able to understand problem C even after reading editorial. Can any one explain in detail?

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

    Good day to you man!

    Not sure, whether you missed statement or solution, so:

    Statement says, that there is permutation of N numbers and there are pairs of "pointers" to the array. Now the question is "how many sequences are there, which do not include any pair (meaning both pointers of the pair)?".

    My solution:

    A) I read all pairs [begin,end] and "sorted" them (I used heap) by their ends (minimal first). Begin and end are mapped to array.

    B) Now for each beginning of sequence (==index in array), there are as many sequences as number of possible ends of the sequences. The question is, how co count number of possible ends? Well as you have sorted pairs → you end the sequence at any index, which is closer to beginning sequence, than the end of nearest pair, for which it is true, that it begins not sooner, than the beginning of the sequence.

    Hmm slightly confusing, isn't it — I'll try to do it once again, so you can choose better explanation (if any of them will be enough)

    a) Map permutation to indexes

    b) Map pairs to indexes

    c) Make pairs as [begin,end]

    d) Sort pairs by end first

    e) Iterate through every index of array

    I) Exclude all pairs, which begins sooner, than actual index
    
    II) Number of sequences, which begin from current index is equal to distance between index and next pair's end

    Complexity O(Nlog(N))

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

Can someone give me some problems like this E, please?

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

Doing some reading on biconnectivity, 2-connectivity, 2-edge-connectivity (quite confusing) for problem E, when I came across this line on wikipedia

it may also be possible for a non-bridge edge to have two articulation vertices as endpoints

Is it true for directed graphs only, or also for undirected graphs as well. I can't find a case where this can be true for undirected graph. Please help :)