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

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

После долгого перерыва (болезнь, конференция и много других вещей) состоится новый Div.3 раунд!

<copy-pasted-part>

Привет! В 12.10.2018 17:35 (Московское время) начнётся Codeforces Round 515 (Div. 3) — очередной Codeforces раунд для третьего дивизиона. В этом раунде будет 6 или 7 задач, которые подобраны по сложности так, чтобы составить интересное соревнование для участников с рейтингами до 1600. Наверное, участникам из первого дивизиона они будут совсем не интересны, а для 1600-1899 покажутся простыми. Однако все желающие, чей рейтинг 1600 и выше могут зарегистрироваться на раунд вне конкурса.

Раунд пройдет по правилам образовательных раундов. Таким образом, во время раунда задачи будут тестироваться на предварительных тестах, а после раунда будет 12-ти часовая фаза открытых взломов. Я постарался сделать приличные тесты — так же как и вы буду расстроен, если у многих попадают решения после окончания контеста. Вам будет предложено 6 или 7 задач и 2 часа на их решение.

Штраф за неверную попытку в этом раунде (и последующих Div. 3 раундах) будет равняться 10 минутам.

Напоминаем, что в таблицу официальных результатов попадут только достоверные участники третьего дивизиона. Как написано по ссылке — это вынужденная мера для борьбы с неспортивным поведением. Для квалификации в качестве достоверного участника третьего дивизиона надо:

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

Независимо от того являетесь вы достоверными участниками третьего дивизиона или нет, если ваш рейтинг менее 1600, то раунд для вас будет рейтинговым.

Спасибо MikeMirzayanov за платформы, помощь с идеями для задач и координацию моей работы. Спасибо моим очень хорошим друзьям Михаилу awoo Пикляеву, Максиму Neon Мещерякову и Ивану BledDest Андросову за помощь в подготовке и тестирование раунда.

Удачи!

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

</copy-pasted-part>

Также спасибо arsijo, Decibit, PrianishnikovaRina и nooinenoojno за помощь в подготовке и тестирование раунда!

UPD: Жду всех желающих в местном Discord сервере сразу после контеста для обсуждения задач.

UPD2: Разбор опубликован.

UPD3:

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

Rank Competitor Problems Solved Penalty
1 nickyrio 6 165
2 smokescreen 6 205
3 lanven 6 239
4 RockButterfly 6 242
5 wythend 6 330

Поздравляем лучших взломщиков:

Rank Competitor Hack Count
1 Gabies 82:-24
2 djm03178 33:-3
3 Laggy 27:-10
4 wanderer163 11:-1
5 antguz 10:-1

Всего было сделано 231 успешных взломов и 322 неудачных взломов!

И, наконец, люди, отправившие первое полное решение по задаче:

Problem Competitor Penalty
A CopeCope 0:01
B stafdasca 0:06
C nickyrio 0:04
D nickyrio 0:11
E somanaik 0:15
F Ohyeeeeee55 0:50

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

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

Hope this div — 3 won't be like last div — 3

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

vovuh с выздоровлением!

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

6 or 7 problems

When did vovuh become Schrodinger?

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

    Sometimes the the number of problems changes right before the start of the round :) It might happen, but in this round (I hope) will be exactly 6 problems :)

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

IT'S TIME TO UP YOUR RATING, GUYS

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

How can I improve my level to solve C&D?

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

Wow!

About 1 month the Div.3 contest came again!

I feel surprised!

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

The last Codeforces Round before NOIP 2018. RP++.

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

Div 3 only? Not good.

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

Finally a contest by my favourite problem setter after a long time. I love Div 3. :)

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

finally div 3 , i wish it will be esiear than last one

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

Unfortunately, clashing with Snackdown :(

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

if my rank is above 1599 can i participate in div 3

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

High rating & Good luck!

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

disease

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

Есть несколько участников, включая меня, которые зарегистрировались на соревнование, когда имели меньше 1600 рейтинга, но на последнем контесте апнули и стали экспертами. В списке зарегистрированных участников такие товарищи не отображаются как участники вне конкурса. Бага, фича или для таких участников контест рейтинговый?

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

    Мы скоро рассмотрим этот вопрос и постараемся исправить ситуацию. Кажется, что так быть не должно.

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

High rating & Good luck

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

Wish you all get +100 rating!

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

Hoping for no delay...

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

Good luck!!I hope we will learn alot.

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

Hey vovuh, i suggest that you should become Master quickly, because your color doesn't match top contributors's colors, which makes me a little uncomfortable.

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

    Ahah, this makes me laugh :D I will become Master as soon as possible, hope I can do it :D

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

This isn't Div 3

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

This Div3A was much, much harder than Div2A typically is. It also didn't have any coding, just math.

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

Wth happend to my brain in problem B

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

    Same, but for me it was an error of index in the vector, it took me like 20 min to find it.

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

      in div(1+2) last contest I solved 3 problems but in div3 Idk why I always become dumper than homer (simpsons)

      the problems aren't that hard but it's like my brain gets numbed because I'm telling myself these are div3 too easy

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

how to solve D ?

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

    start from behind till you run out of boxes .

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

      How did you think that you will have to start from behind?

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

        It's specified in the problem statement that you can remove boxes from start.

        "Maksim wants to know the maximum number of objects he can pack by the algorithm above. To reach this target, he will throw out the leftmost object from the set until the remaining set of objects can be packed in boxes he has. Your task is to say the maximum number of objects Maksim can pack in boxes he has."

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

    Use greedy, start from behind and keep a temporary sum, as soon as this temporary sum is bigger then k take another box, if you have an available one, if not then you just end.

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

What is formula dp for problem B?

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

    Is it dp?

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

    You can use greedy

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

      Really ? I wasn't able to figure out a greedy solution during the contest. In the back of my mind i was still thinking that a Div3-B can't be a DP problem.

      Now after the contest, i saw a few codes, many were done neatly using Memoization. Can you share what Greedy approach you have used ? And which approach would be easier to Debug here ? Greedy or DP ? (I think DP looks neat enough here)

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

        For every position X that is not heated i look for the first heater from the position X + r — 1 backwards to position X — r + 1. The next X is the position of the heater I chose + r.

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

        For coding and debug DP is better. It is short code.

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

Codeforces Round #515 (Div. 1 + Div. 3, combined)

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

How to solve C?, I was thinking in a segment tree but i wasn't sure.

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

    two prefix arrays for books placed on left and right.

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

    You can map the book ids to a set of consecutive integers which are ordered according to the order in which we put the books on the shelf. (Let's call these integers — "second IDs") (Use a C++ std::list or even std::map for this)

    Then for third type Query, you can use the mapping just created and binary search for the second ID of the required book in the second ID collection(Either a vector or a SET) and using the smallest second ID and largest second ID in the collection you can get the answer.

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

    Two arrays for books on left and on right. You can see my solution. Don't think you would need to find an easier one:

    http://codeforces.com/contest/1066/submission/44217835

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

    I used segment tree for fun. http://codeforces.com/contest/1066/submission/44219102 If you don't understand the code I can explain with more detail

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

      Can you explain what you kept in node and how did you managed query and update?

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

        I created a center position far enough so i csn go left in every query and never have a negative position. Each node has 1 if position is occupied and 0 otherwise. Every left query ocuppies a node left to the last one and similar with right queries. You end up with a segment tree where leafs look like this: 000...01110111000...000 I save another array where a[id] is the position of the book in the segment tree. Now queries are simple Query from 0 to id (id not included) is the sum of all 1s left to id. Which is what you need to delete so id becomes the leftmost one. Query from id+1 to N which is from id to rhe rightmost node of the segment tree is the sum of all 1s right to id. Which is what you need to delete so id becomes the rightmost one. I hope i explained it well. Good luck!

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

          That's some precious and articulated explanation! Thanks! I just learnt segment tree few days back, and I got accepted following your approach. Learned a simple but effective technique, storing the position in the segment tree to another array. Thanks again.

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

Contest was so poorly managed. See what I encountered when I opened problem B:

Explanation Part: In the first example the heater at the position 2 warms up elements [1;3], the heater at the position 3 warms up elements [2,4] and the heater at the position 5 warms up elements [5;6] so the answer is 3.

6 2 0 1 1 0 0 1

But there wasn't any heater at pos 5.

Problem Scenerio Part: If n=6, r=2 and heaters are at positions 2 and 4, then Vova can warm up the whole house if he switches all the heaters in the house on.

How can heater on pos 4 warm 3 to 6? r is 2 so it should warmed up 3 to 5.

Asking this, the contest team replied it was an typo and to refresh the page. What about the 15-20 minutes I wasted scratching my head off over the explanation? Why wasn't any announcement made? Assuming the typo was fixed much earlier, what about the people who have had opened the tab in the very beggining? Do I get consideration for that time penalty? Even after replying my question, they didn't make any announcement.

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

    I too left the problem B during the contest because of that. I thought it was not my thing.

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

    I will describe it to you. I cannot make any announcements by myself. Mike was too busy with the Southern Quarterfinal preparation, other admins (or who have access to make announcements, I don't know) didn't have the access to this contest. So how I can post an announcement if I have no rights to do it?

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

      First of all, thanks for explaining the reason. I get it. I won't blame the contest team for this. But definitely CF team should come up with a better system. Giving access to make announcements to contest creators won't be bad for a start. You don't expect this kind of bugs from one of the world's leading competitive programming hosts.

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

        I understand your opinion. In fact I had hold this contest alone and answer all the clarification by myself. Sorry if sometimes you has got bad answers or don't understand my replies.

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

          From your part, I suppose you did what you could do best. Thanks for the quality problems, though.

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

is there is any greedy solution of problem D?

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

    The main solution is to reverse the array and simulate the process from the end. You can think why it is always true :) Editorial will be posted a little bit later

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

I Liked the contest, really felt like a Div. 3 competition.

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

I would like to know if there is Hack data in the D question using the traversal method from the back to the front.

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

Подскажите пожалуйста, как решать F? Upd. Вопрос решен

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

very nice contest

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

The editorial is published now!

P.S. I write this comment because of [cut] of the blog at the main page. Someone can miss that the blog is already published because of this [cut].