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

Привет, Codeforces!

В 22.03.2019 18:05 (Московское время) состоится Educational Codeforces Round 62 (рейтинговый для Див. 2).

Продолжается серия образовательных раундов в рамках инициативы Harbour.Space University! Подробности о сотрудничестве Harbour.Space University и Codeforces можно прочитать в посте.

Этот раунд будет рейтинговым для участников с рейтингом менее 2100. Соревнование будет проводиться по немного расширенным правилам ICPC. Штраф за каждую неверную посылку до посылки, являющейся полным решением, равен 10 минутам. После окончания раунда будет период времени длительностью в 12 часов, в течение которого вы можете попробовать взломать абсолютно любое решение (в том числе свое). Причем исходный код будет предоставлен не только для чтения, но и для копирования.

Вам будет предложено 7 задач на 2 часа. Мы надеемся, что вам они покажутся интересными.

Задачи вместе со мной придумывали и готовили Роман Roms Глазов, Адилбек adedalic Далабаев, Владимир vovuh Петров, Иван BledDest Андросов и Максим Neon Мещеряков. Также большое спасибо Михаилу MikeMirzayanov Мирзаянову за системы Polygon и Codeforces.

Удачи в раунде! Успешных решений!

А вот сообщение от наших друзей из Harbour.Space:

Hello Codeforces!

We want to remind you about the two fully funded scholarships we currently have available:

Master’s in Data Science Scholarship & Master’s in Robotics Scholarship

Both scholarship opportunities include: - Full coverage of the Programme’s tuition fee (€23,000 value) - 3 hours of study a day at Harbour.Space University - 4 hours of internship a day with one of our industrial partners - €12,000 euros a year (living allowance)

If you’re interested in applying for the Robotics Scholarship, apply here.

If you want to apply for the Data Science Scholarship, fill out the form below and we will contact you about the next steps.

GO TO FORM

If you need more information about either, please contact us at hello@harbour.space

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

Место Участник Задач решено Штраф
1 QDEZ604 7 250
2 dotorya 7 254
3 300iq 7 586
4 dreamoon_love_AA 6 165
5 Hazyknight 6 169

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

Место Участник Число взломов
1 Haunted_Cpp 8
2 Tqk 4
3 Abu_Musa_99 3
4 Jobaidul 3
5 yahia 2
Было сделано 37 успешных и 149 неудачных взломов.

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

Задача Участник Штраф
A Sonechko 0:01
B usertab34 0:04
C KhaleD_ 0:04
D edisonhello 0:02
E Roundgod 0:23
F QDEZ604 0:38
G 300iq 0:44

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

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

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

It's raining contests

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

Спасибо PikMike за Div 2

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

Пусть лучше будет 10 задач в 2-ух часовом контесте

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

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

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

Expecting this round to be full of awesome questions with strong pretests!!!

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

Thank you, Harbour.Space University for the Educational Rounds. Best of luck everyone :)

Happy Coding

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

A contest by vovuh after such a long time.

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

ROBOTICS a.k.a. the biggest lie and way to tell yourself “i’m good i’m good” and live your whole life in a lie. listen kids, no one cares about your utter trash and useless robots because you’re not the next einstein and the world has enough smart vacuums, smart fridges, smart washing machines etc. (which are better in every way than your “creations” could ever cease to be.)
it’s literally “santa’s real” for big kids / grown adults.

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

May the force be with us! Happy Coding :)

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

Is it rated?

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

.

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

there is no "*" mark before the handles of those who are not in DIV2! So is there a change in displaying people who are participating out of contest or only I am seeing this???

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

Im running back home for this contest. Wish I would make it home before start...

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

Contest has started.

My mind:donkey mode has been activated

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

I want to add some scores.^_^

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

Hope for no 502 bad gateway like there was 3 minutes ago

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

de ce coaie

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

I think the order of Problem C and Problem D should change.

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

Problem statements for problems A and B could be written better. Took me a lot more time than I care to admit to understand the problems.

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

Again really nice C it's always fun solving problems that needs thinking

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

What is solution for E?? What is test 5?

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

How do we solve E?

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

How to solve Problem B and C.

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

    You have to find first '>' from left and '<' from end. From this points you can get delete rest of them.

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

      Why? Can you please explain the question and how did you get this. Because I think I am missing something in the question.

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

      don't like to criticise individuals, but whoever wrote the statement for problem B is not deserving one. It says " for each operation you have to choose some character that still remains in the string", according to this, one may think that we can chose same character any number of times and then result will either be 1 or 0. But I don't know what he/she intended to write. Disappointed from this round! Also problem A was poorly written too. Took me 25 minutes to understand what the author wants.

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

        That's what I thought in Problem B. Got WA on testcase 2. Can't understand how the problem statement can mean anything else other than the logic which gives 1 and 0 as answer.

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

        You CAN choose the same character any number of times, but the answer is NOT always 1 or 0 :)

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

          Give a counter case

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

            <<>>>>>>>>>>>

            Answer here is 2: delete the fist 2 characters, then keep selecting the first character however many times you need :)

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

              For <<>> if i choose 2nd character('<') then the string will become <>> as choosing < will delete its preceding character. Now i can choose the first occurence of '>' which will delete the last character. The string becomes <>. Now delete any one of the characters will make it a good string. So there's only one deletion. How the ans is 2 and not 1? Please correct me if I am wrong

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

              [copied from above, since this thread seems to have more activity] How's the answer for <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [2nd test case, 5th one] 50? I could choose the last < repeatedly until all characters before it are deleted, then choose the first > repeatedly until all characters after it are deleted. If you do that, the answer is 1. The problem statement doesn't place a restriction on the number of times you can choose a character, it only specifies that it must exist in the string. If repeated choices are not allowed, then how does >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> evaluate to 0?

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

It seems dotorya was hacked and 0ahmad0makki0 copied dotorya submissons.

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

What is the TC #16 of Problem E?

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

The problem C is interesting ! can't wait the Editorial... any hint ?

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

    If you are told the minimum beauty value of your elements, could you easily find out what the optimal elements to pick would be?

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

      Yes ! sort the Length and pick at most $$$M$$$ songs such that the beauty of the selected songs greater than or equal to the minimum beauty i told. right ?

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

        Yes exactly, you would just pick the greatest $$$k$$$ lengths such that the beauty is greater than or equal to the minimum beauty.

        If you sort the songs according to beauty, then you can preprocess these $$$k$$$ lengths as Ari said below using a heap, and then iterate over all the possible minimum beauties and take the maximum answer.

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

          could you please explain this part of your code for problem E ...

          if(v[0] == back) {
                   dp[0][0] = 0;
                   dp[0][1] = 1;
                    } 
           else               {
                   dp[0][0] = 1;
                   dp[0][1] = 0;
                 }
          • »
            »
            »
            »
            »
            »
            7 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +1 Проголосовать: не нравится

            Sure. dp[i][0] is the number of constructions for the first i elements such that the i’th element is not the same as v.back, and dp[i][1] is the number such that it IS equal to v.back.

            That is the base case, so if the first element is equal to the last, dp[0][0] will be 0 and dp[0][1] will be 1, and vice versa if they are not equal.

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

      You can dynamically keep the sum of the k largest elements in the range you care about with a heap

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

    Store beauty and length in a vector of pairs. Sort by beauty in decreasing order. Now travel from index 0 to n-1. If index < k , then take sum of all lengths till index and multiply it by current beauty and keep max of the answer. Store the lengths in a min-heap or a priority queue with min on top. If index>=k then check where current length is greater than min length in heap or not. If it is greater than min length in heap, delete min from heap and add current length to heap and accordingly change the sum of k top lengths. Then take the required product and keep the max.

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

    sort according to beauty in descending order . Then use priority queue to keep track for k-1 largest length songs .

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

    Sort songs in decreasing beauty, and check for each of them what elements to pick such that length of k or less songs are biggest (and those elements have beauty greater or equal than picked song)

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

c was a good question !!!

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

A is so poorly written I spent literally 20 minutes on figuring out what they want from me.. So I it was too late to compete.. Imho almost every educational has some type of really badly written tasks and that you can't understand anything (mostly D)..

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

    I actually thought D was probably one of the most nicely written problems in the set. Their definition of triangulation was a bit different than what I'm used to, but triangulation of a polygon is a very widely used thing that you should know.

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

    In my opinion, none of the problem statements were badly written, they presented exactly what they wanted to. The matter of fact is that if somebody finds it difficult to understand the task, he marks it as badly written. Believe me, not only is solving a task a skill that comes from practice but understanding a task quickly also comes from practice and experience. So don't blame the statements. Sometimes statements are just complex and not "badly written". Just because you are taking time to analyse them and sort everything out in your head, doesn't mean they are badly written.

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

Statement of B was confusing, will give more attention to statements in future contests.

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

Somehow I found A much harder than D.

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

In problem C I thought that I need to pick adjacent songs only... I was implementing logic similar to KMP and completely wasted 30 minutes lol

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

F was very nice.

Is the solution:

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

Just for the sake of curiosity, can problem E be solved if we also ban palindromes of even length?

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

If I look for something good in this competition, perhaps that will be that the test case wasn't weak.

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

Problem E?!!!

I think I understood it incorrectly, can someone please explain it here, It has poor statements.

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

Can't deduce the Problem B logic Correctly!! Doesn't the problem statement means that every string we have, after some number of operations will either become "<>" or "><"? So the number of removal will either be 1(in case "<>") or 0(for this case"><").

This was the logic I applied. But it seems like I'm missing something. I built this logic because there is no limit to number of operations that i can apply on any given string. So why is this logic wrong? LINK TO MY SUBMISSION Please help!!

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

I know we all solved D by some trial and error, guessing, etc... then how can we prove the solution? Any proof?

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

    The edge i..(i+1) is a side of the triangle, in any triangulation. I.e: it would always be an edge. So the best way to connect it to 1 as the third node, and therefore create the minimum possible value.

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

    The key idea is that vertices $$$i$$$ and $$$i+1$$$ will always share a triangle.

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

    You are going to have to use all edges in the outer polygon in a triangulation, and for each edge you have to choose one additional label, and using 1 works. So the answer is simply

    $$$ \sum_{i=2}^{n-1} i (i+1) $$$
    • »
      »
      »
      7 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +31 Проголосовать: не нравится

      I don't think this proof is correct. This assumes all edges are part of separate triangles. But if there is a triangle with vertices $$$i$$$, $$$i+1$$$ and $$$i+2$$$, then two consecutive edges are accounted for in the same triangle.

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

        That's true, some of the outer edges can be used together. The triangulation I'm saying is optimal is $$$(1,2,3), (1,3,4), (1,4,5), ..., (1,n-1,n)$$$. While intuitive that this is optimal, what I wrote was not a correct argument.

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

    Actually not all solved it by trial and error. I proved it during contest time :)

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

    Actually I tried all possible states xD 51705295

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

    it seems i have proved this solution. Suppose there isn't any diagonal from 1 in optimal triangulation. Then we can move this triangulation in clockwise and decrease the cost. So there is some diagonal from 1 to i. Let's consider triangulation of "1 to i" polygon. If there isn't any diagonal from 1 we can do how described above and so on. So, to minimaze the triangulation cost it needs that all diagonals starts in 1.

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

    This comes in somewhat late, but I haven't seen a full proof in the comments yet.

    Let the value of a segment be the product of its endpoint. Then clearly the value of a triange is greater than or equal to the value of any of its sides. Moreover, unless one of the vertices is $$$1$$$, the value of the triangle is greater than or equal to the sum of any two sides. This is because $$$abc - ab - ac$$$ factors as $$$a((b - 1)(c - 1) - 1)$$$ which is non-negative unless $$$b$$$ or $$$c$$$ is $$$1$$$.

    Now note that every side of the polygon belongs to a triangle in the triangulation. If this triangle contains no other side then its value is at least the value of that side. If it does contain another side then the value of the triangle is greater than or equal to the sum of these two sides, unless one of the vertices is $$$1$$$. By adding up it follows that the sum of the values of all the triangles is at least the sum of the values of the sides, except for the two sides that include vertex $$$1$$$ (because they may be included in a triangle that has another side of the polygon).

    Triangulation $$$(1, 2, 3), (1, 3, 4), (1, 4, 5), \dots, (1, n - 1, n)$$$ gives exactly that sum of values, so that's our answer. Also note that the exact labels on the vertices don't matter, all that is needed is that exactly one label is equal to $$$1$$$.

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

little surprise when i see mkisic_ code

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

banning mkisic_ from point buff

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

Ну блин... С 30 (КАРЛ!) 30 раза я сдал 2 таску!!! А она оказалась такой лёгкой...

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

А вам тоже нравятся раунды с безыдейными 4 задачами ? ( это при том что я не эксперт) мдааа... не ожидал я такого конечно. (Можете минусить, флэшу все равно)

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

I couldn't find a reason why problems D had so many AC's. None the less I found that this was a direct answer to the problem. Actually, Problem D was easier than the problem here, but just a bit of modification to the code would do the logic.

Maybe this is the way, Problem D was supposed to be solved, using that DP approach with O(n^3).

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

    That's not really true. We just greatly underestimated contestants. Personally, I thought that majority will stuck in some sort of dp, so after some discussion we decided to leave a place to a straightforward solution. In the end community surprised me in the good way.

    PS: linear is not a limit: OEIS/interpolation gives us closed formula and $$$O(1)$$$ solution.

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

      It’s unfortunate because I would’ve been stuck in a DP type solution if I wasn’t thrown off by the fact that many people were solving it within s few minutes, so I realized it must be some type of greedy solution. If it was a contest with a frozen scoreboard I think a lot fewer people would have solved it.

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

    Actually you can solve problem D in O(1) time complexity.

    Let S = 2 * 3 + 3 * 4 + ... + (n-1) * n

    3S = 2 * 3 * (4-1) + 3 * 4 * (5-2) + ... + (n-1) * n * (n+1-(n-2))

    3S = 2 * 3 * 4-1 * 2 * 3 + 3 * 4 * 5-2 * 3 * 4 + ... + (n-1) * n * (n + 1)-(n-2) * (n-1) * n

    3S = (n-1) * n * (n + 1)-6

    S = ((n-1) * n * (n + 1)-6) / 3

    P/s: I don't know how to use Latex :( So the signs and numbers may be ugly

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

Я периодически замечаю во взломах вот такие вот случаи, когда очевидно, что в коде умышленно оставлена лазейка для взлома: 51722781 от Abu_Musa_99 (там еще одно такое решение есть). С этим как-то борются? Есть ли автоматические или ручные проверки читеров? По-моему, было бы классно иметь кнопочку "Report" за такого рода поведение и правило, что взлом таких решений наказывается (даже если ты мимо проходил и случайно увидел).

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

    Или, например, можно убрать вознаграждение за взлом пользователей, имеющих менее 5 контестов с хотя бы одной решенной задачей. Задача, как-минимум, усложняется и будет проще отлавливать неспортивное поведение.

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

Can someone explain how to solve C and the reason behind it?

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

Hello, Div.2, my old friend

I've come to solve your tasks again...

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

Can we solve C using DP by iterating on k?

If we can't use DP , can you explain why not?

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

check this 0ahmad0makki0 is fake account of dotorya. Same solution and also same template.

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

How to solve G?

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

I thought the answer could be only "1" or "0",and it took me a while to understand the meaning of Before applying the operations in problem B. ;P

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

Any hint for G?

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

    Let's divide all edges into two types: edges of the first type connect vertices having different remainders modulo $$$2$$$, and edges of the second type connect vertices having same remainders.

    First of all, let's solve an easier version of the problem: we have to minimize the number of edges of the second type in our path, and minimizing the length of the path has lower priority. Then we can build one tree where each vertex is a union of vertices $$$2x + 1$$$ and $$$2x + 2$$$ in the original graph, and use something like binary lifting or centroid decomposition on this tree. For example, if applying binary lifting, we may maintain an array $$$up[N][LOGN][2][2]$$$, where $$$up[v][k][f1][f2]$$$ is the length of the shortest path that starts in vertex $$$2v + f1$$$ of the original graph, goes $$$2^k$$$ steps up the tree, and ends in the vertex having remainder $$$f2$$$ modulo $$$2$$$ in the original graph.

    Okay, but we can't use this approach in the problem from the contest, because sometimes it is better to traverse some additional edges of the second type, so we may choose cheaper edges of the first type. To handle this, let's preprocess all edges of the second type in such a way that cost of each such edge will be equal to the shortest path between its endpoints. This can be done with a Dijkstra-like algorithm.

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

      Thanks for the solution!

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

      How can we made this part "To handle this, let's preprocess all edges of the second type in such a way that cost of each such edge will be equal to the shortest path between its endpoints. This can be done with a Dijkstra-like algorithm." ?

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

        Let's create a graph with $$$n + 1$$$ vertices. $$$i$$$-th vertex will represent an edge between vertices $$$2i - 1$$$ and $$$2i$$$, and in the end, we want the distance from vertex $$$0$$$ to vertex $$$i$$$ be equal to the length of the shortest path between $$$2i - 1$$$ and $$$2i$$$.

        How can we find the shortest path between $$$2i - 1$$$ and $$$2i$$$? We either pick the edge between them, or go to some other neighbor of $$$2i - 1$$$ (let it be $$$2j - 1$$$), take the shortest path between $$$2j - 1$$$ and $$$2j$$$, and take the edge from $$$2j$$$ to $$$2i$$$.

        So, we need to create the following edges in our graph: $$$n$$$ edges going from $$$0$$$ to $$$i$$$ and having weight equal to $$$w_{2i - 1, 2i}$$$ in the original graph, and for every pair of odd neighbors $$$2i - 1$$$ and $$$2j - 1$$$ an edge going from $$$i$$$ to $$$j$$$ and having weight $$$w_{2i - 1, 2j - 1} + w_{2i, 2j}$$$.

        All that's left is to run Dijkstra from vertex $$$0$$$ in this graph, and that's how we get preprocessed weights.

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

if The CF-Predictor broken ? ( Chrome Browser)

=> Use this Website

=> About the Issue

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

Second problem ruined the whole contest for me. The problem statement must be properly written.

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

What's the approach for F?

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

    I have the following observation but I didn't solved it.

    Consider vertex $$$(x, y)$$$ as an edge connecting $$$a_x$$$ and $$$b_y$$$. Then the answer is the sum of (number of $$$a_i$$$ $$$\times$$$ number of $$$b_j$$$) in each connected component. If we can maintain the connectivity supporting deletion efficiently, the original problem can be solved.

    Edit: I upsolved it by doing divide-and-conquer on time axis. Distribute the lifetime of each vertex to $$$\text{O}(\log n)$$$ time intervals. Then traverse the segment-tree-like structure with disjoint set union operations and restore operations.

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

      Can you give more explanations? It's hard for me to understand your code))

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

        Firstly, suppose a vertex exists during $$$[2, 9]$$$. Then you can split the interval similarly to range query in segment tree, i.e. $$$[2, 9] \rightarrow [2, 3] + [4, 7] + [8, 9]$$$ (it may vary due to different implenmentations of segment tree/divide-and-conquer).

        Call the following function recursively.

        f(left, right):
          Add vertices with interval [left, right] and record every changes
          if left = right
            Output the current answer
          else
            mid := (left + right) / 2
            f(left, mid)
            f(mid + 1, right)
          Undo the stored changes
        

        It is easy to see that:

        1. each answer is printed in correct order

        2. all vertices have the correct state (existing or not) when each answer is printed

        3. there are almost $$$\text{O}(n \log n)$$$ operations of adding vertices

        4. consequently, there are almost $$$\text{O}(n \log n)$$$ undo operations

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

please update the ratings.

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

Can someone explain their approach in solving C, I dont know why I got hold of a very wrong track in solving it, and finally it became a mess.

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

    Let $$$x = [(\text{beauty}_{k_{1}}, \text{length}_{k_{1}}), (\text{beauty}_{k_{2}}, \text{length}_{k_{2}}), ...]$$$ This array is sorted by beauty.

    Then if you pick $$$(\text{beauty}_{k_{i}}, \text{length}_{k_{i}})$$$ as minimum beautiful song, then you must pick up to $$$k-1$$$ songs from $$$[x_{i+1}, x_{i+2}, ..., x_{n}]$$$. You can use std::multiset or something to pick $$$k-1$$$ most longest songs.

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

    When selecting a song, the total length and minimum beauty matters. So let's sort the songs by decreasing beauty, and process them like that. To make sure we have maximum length, we keep a multiset of the k-1 longest songs processed so far. Let's process song i. We do ans = max(ans, max_total_length*beauty[i]. If the multiset has size less than k-1, add this song's length to it and increase max_total_length. Otherwise, if this song's length is greater than the shortest length in the multiset, remove that length, subtract it from max_total_length, and add the current like previously.

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

Please update the rating.

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

Please update the rating.

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

Have refeshed my page hundreds of times.

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

Please update the rating!

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

It is really disappointing that some 2100+ rated players make fake accounts before the contest in order to participate officially. For example take a look at this account: bigbigbigbigcat111 This account was made just before the contest and ranked 30. I think this account was made by bigbigbigcat111 who is unable to participate officially because his rating is above 2100. Making fake accounts and stealing rating from other participants is unacceptable. Please remove him from the list of official participants. Upd: I noticed that he has account: bigbigcat111 and bigcat111 as well. All accounts are from China and they have similar rating.

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

Please do not refresh the ratings... I'm sad enough...

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

...Why hasn't it been rated yet?I've been waiting for a long time.Just be a little faster,OK?Thanks!

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

When will the editorial come out?

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

What about the System Testing, when it's going to start?

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

Why is system testing is so late?

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

System Testing ended.

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

Мне сообщили что мое решение задачи А совпадает с другими, я хочу доказать что этот код был написан исключительно мной. Я признаю что использовал компилятор с сайта ideone.com не переключив с публичного режима. Хочу сказать что, первый этот код отослал я и вот собственно ссылка на мой код https://ideone.com/io9ZtH. [submission:http://mirror.codeforces.com/contest/1140/submission/51697690] моя отсылка. Вот это скриншот историй моего браузера https://drive.google.com/open?id=18rEsmYevQVvueTfF1ZOEr6eP6px0yHPz , на снимке отчетливо видно что, я сначала открыл задачу А а затем сайт ideone где ссылка совпадает с выше указанным. К тому же там видны время открытий сайтов, я живу в Казахстане поэтому сдавал контест по времени Астаны 6+. Контест начался в 21:05 по времени Астаны, я открыл задачу А в 21:17 и решил его в 21:26. Я уверен что другие пользователи отослали позже, и если логический подумать кто решил и отослал всех раньше тот и является автором кода ,так как не вижу причину сначала откомпилировав и подождать вместо того что-бы сразу попробовать отослать решение. На этом все, искренне надеюсь что Администраторы обратят на это внимание и справедливость восторжествует, хотя и признаю что я провинился использовав публичный компилятор.

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

problem c was very nice,thanks for the problem author!!!

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

When the editorial will be published?

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

Hello!Can anybody expalin why my sol for problem C fails?Seems like it must work.Thanks! https://mirror.codeforces.com/contest/1140/submission/51763978

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

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

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

How can we solve D? I think I should solve prefix sum... T^T I will do not go to sleep when I solve D before!!