vilcheuski's blog

By vilcheuski, 3 years ago, translation, In English

Hello, Codeforces!

We invite you to Codeforces Round #765 (Div. 2), which will take place in Jan/12/2022 15:05 (Moscow time). Note the unusual contest start time. This round will be rated for all the participants whose ratings are lower than 2100.

You will have to solve 5 problems in 2 hours. One of the problems will be divided into easy and hard version. The round is based on the problems from Belarusian Regional olympiad. We kindly ask all Belarusian pupils who participated in this olympiad, to refrain from taking part in this round and discussing the problems publicly before the round ends.

Thanks to everyone who helped to prepare this contest:

The scoring distribution: 500-1000-1500-2000-(2000+1250)

Good luck to everyone!

UPD: Finally the editorial is available.

  • Vote: I like it
  • +297
  • Vote: I do not like it

| Write comment?
»
3 years ago, # |
  Vote: I like it +50 Vote: I do not like it

Wish you all good luck & high rating!

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +16 Vote: I do not like it

    thanks, you too

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it -13 Vote: I do not like it

      I laughed at this more than I should've, XD. Newbies are so cute at times.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -38 Vote: I do not like it

    Hey can you help me, I accidentally submitted code for A problem while thinking about pretests and now the time shows after 2h, but I had solved it before 10 min. It's a huge decrease in rank. Please a help will be great, I just commented after the contest so it can be considered. Please if that submission could be removed and my score revaluated.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Don't be too much greedy with ratings.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +26 Vote: I do not like it

        Yeah sorry, I didn't mean it but just wanted to know if there was such a correction or not, it didn't feel good to go down this way. Sorry, but isn't it too harsh to get so many downvotes asking for help :(. Anyways won't do this again.

»
3 years ago, # |
  Vote: I like it +2 Vote: I do not like it

Good luck! I wish every grey become green!

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +40 Vote: I do not like it

    Can you please also wish for green to become cyan?

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +10 Vote: I do not like it

      OK! I wish every green become cyan!

      • »
        »
        »
        »
        3 years ago, # ^ |
        Rev. 2   Vote: I like it +33 Vote: I do not like it

        Can you please also wish for every cyan to become blue?)

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it +33 Vote: I do not like it

          Ok, i wish every cyan to become blue!!

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
              Vote: I like it +36 Vote: I do not like it

            and how about for every blue to become purple?

            • »
              »
              »
              »
              »
              »
              »
              3 years ago, # ^ |
                Vote: I like it -19 Vote: I do not like it

              I wish Every blue becomes grey. Every cyan becomes grey with lower rating and every green becomes grey with 386 rating .

              • »
                »
                »
                »
                »
                »
                »
                »
                3 years ago, # ^ |
                  Vote: I like it +8 Vote: I do not like it

                I wish every P_key25dec become red.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it -11 Vote: I do not like it

        I don't want to go back to cyan!

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Thanks, I join this wish.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +19 Vote: I do not like it
        shrek tomorrow
  • »
    »
    3 years ago, # ^ |
      Vote: I like it +9 Vote: I do not like it

    Don't know about greys but i was green and now became grey.

»
3 years ago, # |
Rev. 2   Vote: I like it +4 Vote: I do not like it

The round is based on the problems from Belarusian Regional olympiad.

Does it mean that the round has many OI-style problems?

If someone can answer me, thanks in advance.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I think it will have standard codeforces problems, but the ideas of the problems are based from the Belarusian Regional olympiad

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +22 Vote: I do not like it

      Yes, the contest will have a usual Codeforces format. For example, on the Regional Olympiad we have partial scoring for the problems, and there will be no such thing on the round itself.

»
3 years ago, # |
Rev. 3   Vote: I like it -15 Vote: I do not like it

Finally a good old div2 with 5 problems. Can't wait for it!

Wish everyone good luck

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -15 Vote: I do not like it

    THank you CODEFORCES for round with 5 problems.

»
3 years ago, # |
  Vote: I like it -8 Vote: I do not like it

Wish everyone good luck!

»
3 years ago, # |
  Vote: I like it -11 Vote: I do not like it

It's a pity that I can't participate, good luck everyone who can!

»
3 years ago, # |
  Vote: I like it +2 Vote: I do not like it

Oh, i will solve this problems tomorrow at 9:00 AM(i from belarus):D

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Two contests on the same day damnn!!

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Looking forward to participating and performing well.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Thank you for this amazing round!

»
3 years ago, # |
  Vote: I like it +28 Vote: I do not like it

Every Monogon follower after seeing a recent CF Round Announcement: 'Not gonna lie, I spent the last one hour thinking of a smart comment that would get many upvotes.'

Together we can stop this. Donate by upvoting my comment.

(I may or may not be a Monogon Follower)

»
3 years ago, # |
  Vote: I like it +20 Vote: I do not like it

Yey,First div2 contest in the new year,Wish everyone good luck!

Meme
»
3 years ago, # |
  Vote: I like it +174 Vote: I do not like it

all Belarusian pupils

all Belarusian specialists can do whatever they want

»
3 years ago, # |
  Vote: I like it +7 Vote: I do not like it

Why has the Magic tab not disappeared yet ?

»
3 years ago, # |
  Vote: I like it +11 Vote: I do not like it

Are the problems completely the same as the Belarusian Regional Olympiad or they are just based on them?

»
3 years ago, # |
  Vote: I like it -66 Vote: I do not like it

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Great! The score distribution announced very early!

»
3 years ago, # |
  Vote: I like it -24 Vote: I do not like it

Please, make problem B easy, so newbies can solve it

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    You will see on the contest whether it's easy or not :) We cannot change the problem, as it is already prepared.

»
3 years ago, # |
  Vote: I like it +65 Vote: I do not like it

Wish you all good luck & high rating!

»
3 years ago, # |
  Vote: I like it +1 Vote: I do not like it

Nyaharoo~~

»
3 years ago, # |
  Vote: I like it +41 Vote: I do not like it

essayforces!

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +41 Vote: I do not like it

    Am i the only one who read it as easy forces.

»
3 years ago, # |
  Vote: I like it +30 Vote: I do not like it

who all like non-theme based contests wherein the problem statements are easy to understand and one dont have to spent extra 10-15 just to grasp the statement fully?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    It really took me around 10 mins just to understand the statement of A....due to which this contest became the first div 2 contest in which I solved B faster than A xD

»
3 years ago, # |
  Vote: I like it +10 Vote: I do not like it

I want to bid for the modern art painting of Problem C.

»
3 years ago, # |
  Vote: I like it +5 Vote: I do not like it

What was that with problem A man? Almost gave me a heart attack xD

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +11 Vote: I do not like it

    Essay Forces!!

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I participated in olympiad, this problem there today, so it's really easy

»
3 years ago, # |
Rev. 2   Vote: I like it +2 Vote: I do not like it

Also, I hate Jupiter & its moons now XD

»
3 years ago, # |
  Vote: I like it +13 Vote: I do not like it

Why so strict memory limit for problem C? :(

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

not able to solve single problem :/

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it -45 Vote: I do not like it

    ruined by kids downvoting and crying over it

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +15 Vote: I do not like it

      Participating in contests is a form of practice.

      • »
        »
        »
        »
        3 years ago, # ^ |
        Rev. 4   Vote: I like it -40 Vote: I do not like it

        ruined by kids downvoting and crying over it

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it +1 Vote: I do not like it

          what do you mean? div2 is rated for newbies to

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
            Rev. 2   Vote: I like it -27 Vote: I do not like it

            ruined by kids downvoting and crying over it

            • »
              »
              »
              »
              »
              »
              »
              3 years ago, # ^ |
              Rev. 2   Vote: I like it +8 Vote: I do not like it

              You're not enough eligible to advice others, go practice yourself and gain some ratings. And about demotivation, it's your theory that you are explaining to others, maybe for others things doesn't work that way. When i lose rating i feel little happy about it coz in some other contest i'm gonna get a huga +ve delta and also for current contest which i couldn't solve, will give me something new to learn.

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
          Rev. 2   Vote: I like it +13 Vote: I do not like it

          Losing ratings is just because you did not perform well enough during the contest and also because of some hard problems in it. That might be a motivation for you to keep practicing and getting better to solve these hard problems to gain more ratings.

          And about quitting CP just because you can't solve problems and depressed because you have lost your ratings, I think it didn't really come from ratings, but you didn't keen on CP enough.

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
            Rev. 4   Vote: I like it -12 Vote: I do not like it

            in this contest really bad problem statement , thats the main reason :/ hopefully in future contest not like that long essay.

            • »
              »
              »
              »
              »
              »
              »
              3 years ago, # ^ |
                Vote: I like it +27 Vote: I do not like it

              You didn't solve the problem not because of statements. Don't lie to yourself.

              We had only 45 questions in a contest, which is far less than the average. Statements were crystally clear.

»
3 years ago, # |
  Vote: I like it +40 Vote: I do not like it

I hate long statements

»
3 years ago, # |
  Vote: I like it +5 Vote: I do not like it

thanks to problem A i could now probably go to sleep with 0 submissions

»
3 years ago, # |
  Vote: I like it +5 Vote: I do not like it

I love pretest 5 on problem C

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it +1 Vote: I do not like it

    I love pretest 5 and MLE on problem C.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Wish the memory limit were 512Mb.
    Tried really weird things to make my 3D dp ~476Mb solution pass (array of maps and maps of vectors, lol).

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +18 Vote: I do not like it

      This was made on purpose to make you write 2D DP.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      array of maps and maps of vectors, lol

      Sounds quite complex. The intended solution uses just a 2D array, and the memory limits were adjusted for this solution.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +4 Vote: I do not like it

        Really enjoyed that, being new to DP, it was fun to optimize from 3D to 2D. Great contest you guys :) Thanks!

»
3 years ago, # |
  Vote: I like it +31 Vote: I do not like it

Long statements really consumes lot of time.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -73 Vote: I do not like it

    Yes, but they are more clear and contain more explanations, so you most likely will understand the problem from the first read.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +40 Vote: I do not like it

      actually they are not more clear the story is not useful, i mean shorter statement is better

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +28 Vote: I do not like it

        Would it be better if we rewrote the statements as

        Given an array $$$a$$$ of $$$n$$$ $$$\ell$$$-bit integers, find an $$$\ell$$$-bit integer $$$y$$$ such that $$$\sum\limits_{i=1}^n d(a_i, y) \to \min$$$, where $$$d(x, y)$$$ is Hamming distance.

        I tried my best to make the rewrite above as short as possible, without omitting essential details.

    • »
      »
      »
      3 years ago, # ^ |
      Rev. 2   Vote: I like it +13 Vote: I do not like it

      Yes, but they are more clear and contain more explanations.

      Exactly, but this applies only if statements actually contain explanations, rather than random planet's moon.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +42 Vote: I do not like it

        I know that I don't hold the popular opinion here. Still, I want to show that the problem A mostly contained detailed explanations, rather than "random planet's moon". See yourself:

        Image

        As you can see, the legend part is no more than a third of the statements, while the other part is actually explanations.

        To prove my point about clearer statements further, I want to say that this contest had much smaller amount of questions than other recent rounds I helped setting. The number of questions was even ~1.5 times smaller than my old Codeforces Round from five years ago, where the number of participants was ~3 times smaller than now.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      actually no

      im pretty sure short statements are easier to understand than long ones

      long statements are confusing and unclear

»
3 years ago, # |
  Vote: I like it +81 Vote: I do not like it

Anyone else ?

problem A
»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

How to solve problem B ??

Can someone help & tell me if my logic is wrong here : https://codeforces.me/contest/1625/submission/142496857

»
3 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Why is the memory limit for C so strict?

»
3 years ago, # |
  Vote: I like it +20 Vote: I do not like it

ReadAlotForces

»
3 years ago, # |
  Vote: I like it +7 Vote: I do not like it

Is it just me or contest these days are really hard?

»
3 years ago, # |
  Vote: I like it +10 Vote: I do not like it

Is there any greedy solution for problem C?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    With a simple greedy solution (eliminate a sign which is causing the largest delay at each step), I came till pretest 8.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    I don't know such solutions. Use dynamic programming.

  • »
    »
    3 years ago, # ^ |
    Rev. 8   Vote: I like it +15 Vote: I do not like it

    Greedy is not feasible for problem C.

    try this test case:

    10 18 3
    0 1 3 4 6 7 9 10 11 12
    2 3 2 3 2 3 2 3 4 3

    the answer is 42, meanwhile greedy approach is likely to give 45.

    Take a look at the illustration:

    1625C.png

    So use dynamic programming, I hope my submission 142583078 may help you.

»
3 years ago, # |
  Vote: I like it +9 Vote: I do not like it

How to solve D?

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it +18 Vote: I do not like it

    Special case: if $$$k = 0$$$, the answer is all indices from $$$1$$$ to $$$n$$$ inclusive. Hereafter we assume $$$k \neq 0$$$.

    Partition the values $$$a_i$$$ into groups according to the prefix of bits higher than $$$k$$$'s most significant bit. Observe that you can consider each such group individually, as any two values from two different groups will xor into a prefix that's greater than $$$k$$$'s most significant bit.

    Now in each group, we can always choose at least one member, and at most two members, because if we choose more than two, there will be two values that will xor to zero in the position of $$$k$$$'s most significant bit, thereby producing a value less than $$$k$$$.

    To find out if we can choose two values from a group, we find the pair with the maximum xor and compare it with $$$k$$$. Finding the maximum xor of two numbers in an array is a well-known problem (but you'd need to modify the algorithm on this page so that you know the indices of the pair) and can be done in $$$O(m \log k)$$$, where $$$m$$$ is the number of values in the group. Therefore the total time taken over all groups will be $$$O(n \log k)$$$.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      can u give me an example how to partition such groubs. I think in each group the xor between its elements must make the bits that greater than most significant bit in k equal to zero, right???

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +9 Vote: I do not like it

        Say $$$k = 5 = 101_2$$$, and $$$a = [27, 31, 17, 13] = [\color{red}{11}011_2, \color{red}{11}111_2, \color{red}{10}001_2, \color{red}{1}101_2]$$$. The first and second element would be in one group, the third element would be in another, and the fourth in yet another, according to the bits highlighted in red, which is anything above $$$k$$$'s most significant one-bit.

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
          Rev. 3   Vote: I like it 0 Vote: I do not like it

          I get it thanks a lot

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          I created strings for those bits like "11", "11", "10","01" and stored them in a map so that only unique ones are stored and then printed all the unique strings' corresponding index, but it didn't work, any idea why? 142643010

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            From what I can tell you are indexing by bits $$$\geq msb$$$ rather than $$$> msb$$$, and I don't see anything recognizable as a max-xor-find there.

            142559786 Here's my solution for reference, it's in Rust though.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Damn, I was stuck at that "well known problem". Thanks for the clarification!

    • »
      »
      »
      3 years ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      Should we also add one number whose MSB is less than k's MSB? And also one number whose MSB is equal to k's MSB?

      EDIT: nevermind. I guess these numbers will be in the group with prefix 00..0

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Observation is that a minimum value of $$$a_i \oplus a_j$$$ is achieved at some two adjacent numbers after sorting.

    After sorting, you can write simple dynamic programming, $$$dp_i$$$ — the length of the longest subsequence that ends with $$$i$$$. Transitions are very simple $$$dp_i = max$$$ {$$$dp[j]+1$$$}, where $$$a_i \oplus a_j \geq k$$$.

    It can be optimized using trie.

    • »
      »
      »
      3 years ago, # ^ |
      Rev. 2   Vote: I like it 0 Vote: I do not like it

      But why only $$$a_i\oplus a_j\geq k$$$?

      It is possible that whatever subsequence $$$dp_j$$$ is storing in has a xor value $$$x$$$ and $$$x\oplus a_i\lt k$$$.

      Does this have something related to the optimization using trie?

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        It is possible that whatever subsequence. No, because of the first observation.

»
3 years ago, # |
  Vote: I like it +16 Vote: I do not like it

That 128MB memory limit on Problem C was tricky.

»
3 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

What's the expected time complexity for problem c ? my O(n*k^2) dp solution was giving tle.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    my solution passed with this complexity.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I have $$$O(n^2 \cdot k)$$$ and I passed pretests. $$$500^3$$$ should fit if you don't do expensive operations.

»
3 years ago, # |
  Vote: I like it +127 Vote: I do not like it

  • »
    »
    3 years ago, # ^ |
      Vote: I like it -23 Vote: I do not like it

    A was easy, It was based on bits and count of which is more 0 or 1, My submission My sub

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +18 Vote: I do not like it

      Man , I am saying Statement is way too complicated for A . BTW I have solved it

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I read problem-A for 20 mins..... So so complicated and there are lots of new words for me.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Me reading all problems after 2 hours

»
3 years ago, # |
  Vote: I like it +1 Vote: I do not like it

Can someone please give me hint for C?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    Hint : Try to think of 3 state Dp transition and optimize space complexity

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +2 Vote: I do not like it

    dp[i][j] = minimum time to reach L from ith speedpost (this speedpost is not removed) provided you are allowed to remove j speedposts in the middle.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      So.. is dp[i][j] = min (dp[i+1][j], dp[i+2][j-1], dp[i+3][j-2],... dp[i+1+j][0])? That's O(n*k*k) right?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Dynamic Programming. Lets iterate over the stops only. M(i,s) = minimum time to reach ith stop. ans = min {M(n,s')} where n-k <= s' <= n.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

why aren't you allowing $$$log(n)^2$$$ solutions to pass in D?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    it depends on how efficient your implementation is. I'm pretty sure that my 142503668 is $$$\log^2$$$, and it got AC in 1.6s

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Has anyone solved B via Binary search ?

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Why did I pass the code sample locally, but not in codeforces ?

Spoiler
»
3 years ago, # |
  Vote: I like it +6 Vote: I do not like it

Some hints for D please.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +14 Vote: I do not like it

    bit trie

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      can anyone of you please tell in problem B why it is sufficient to check only two consecutive indexes?

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +3 Vote: I do not like it

        because you can use all the elements before the previous one to be your prefix, so at any position it's always better to maximize that number.

      • »
        »
        »
        »
        3 years ago, # ^ |
        Rev. 2   Vote: I like it 0 Vote: I do not like it

        Let's say two numbers that are equal have index $$$l1$$$ and $$$l2$$$.

        Consider $$$l1$$$<$$$l2$$$ Now we'll see what is the length of the segment, for number at position $$$l2$$$ to be at the $$$l1$$$ position in its segment, segment must start at index $$$l2-l1$$$.

        As we have to maximize the length we can take the endpoint of the segment to be $$$n-1$$$.

        Now length of the segment becomes $$$(n-1) - (l2-l1) + 1$$$. You can see that if $$$l2$$$ and $$$l1$$$ will not be nearest index of some number then answer will become worse.

  • »
    »
    3 years ago, # ^ |
    Rev. 5   Vote: I like it +8 Vote: I do not like it

    I think the below approach is correct.

    Spoiler
    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Thank you!

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Yes you are right! After seeing your approach, I modify my code and it AC, thank you!

»
3 years ago, # |
  Vote: I like it +71 Vote: I do not like it

I like problem D, but why $$$k=0$$$...

»
3 years ago, # |
  Vote: I like it +3 Vote: I do not like it

A hint for Problem E2:

Spoiler
  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Maybe an interesting extension for type 1 queries is to guarantee that $$$s[l+1 \dots r-1]$$$ is an RBS.

    Spoiler
    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +5 Vote: I do not like it

      fun fact: actually expending queries of type 1 to even not guaranteeing the deleted brackets are paired can still be reduced to the problem you said above

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Can you solve E1 with MO's algorithm?

»
3 years ago, # |
  Vote: I like it +12 Vote: I do not like it

Cheater in my room. She his/her code for C: here

»
3 years ago, # |
Rev. 3   Vote: I like it -6 Vote: I do not like it

The most miserable thing for python users during the contest: Figure

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Exactly, I also faced the same issues. in the end, I had to write the code in C++ ( which has the same time complexity and space complexity as of python code) and it got AC.

»
3 years ago, # |
  Vote: I like it +18 Vote: I do not like it

A very nice contest ruined with long problem statements

»
3 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Can anyone help me in problem B,wrong answer at pretest 4

Basically selecting minimum difference indices of same character than adding count of elemnts before first appearence and after elements of second appearence

ans = x[0] + n — x[1];

Code
  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I didn't get why you want to maintain the size of map entry to 2.

    I just collected all the indices and did the max among every two consecutive indices https://codeforces.me/contest/1625/submission/142480649

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      yeah i did the same after my frnd told me to simply run for all, basically looping for all indices am already selecting two indices of minimum diffrence

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        This is the issue I guess

        Let say indices for a number are 1 3 10 11

        U will initially store 1 3 then u will ignore 10 as 3-1 < 10 -3

        But u need 10 to take 10 -11

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it +7 Vote: I do not like it

          ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh, bruh marry me

»
3 years ago, # |
  Vote: I like it -14 Vote: I do not like it

The idea of Problem D is good. Not only observation but also a specific technique is required to solve it. However, I think it is too hard for Div.2D. Due to the difficulty of this technique, it should be somewhere around Div.2E. Also, the corner case $$$k = 0$$$ is tricky.

The technique required to solve D
  • »
    »
    3 years ago, # ^ |
      Vote: I like it +15 Vote: I do not like it

    Trie is not needed if you make use of the observation that choosing elements with different msb (most significant bit) are independent and to consider which elements of the same msb should be chosen, we just need to switch off the msb and consider the subproblem recursively.

    At the last step, when the msb becomes smaller than or equal the msb of $$$k$$$, we can make use of this to check whether there exist a pair of numbers whose xor exceeds $$$k$$$, and if otherwise we just pick any random number.

    • »
      »
      »
      3 years ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      To handle groups of elements with MSB <= k, I also used the technique in the GeeksforGeeks article you linked during the contest, but I got TLE. I even tried replacing the set<int> that they use with an efficient hashmap, but still got TLE. In order to get AC when upsolving, I realized it was faster to use a 0/1 trie to figure out what the maximum XOR of any pair of numbers is. See the maxXor function in this solution.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        My submission 142523115 was able to pass in 1560ms using set<int> though.

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          That is very close to the time limit, so my guess is that you have lower constant factor than my solution did, since you are using printf/scanf instead of cout/cin and also you are using __builtin_clz which I didn't know about before. Thanks for sharing your solution.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

What is wrong with this logic for D: let i = leftmost set bit of k, right shift each element by i-1. Output the no. of unique elements after the right shifts.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Hint — you can take at most 2 elements from a group of unique elements, not 1. Think about it.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Can anyone, who was able to solve Problem C walk me through the recursive->Memoization->Top-Down/Bottom-Up solution? I am learning DP right now and could not understand the code of other participants. Would really help me a lot...

  • »
    »
    3 years ago, # ^ |
    Rev. 3   Vote: I like it +5 Vote: I do not like it

    Let $$$dp(i,j)$$$ = min time to reach $$$d_i$$$, by removing $$$j$$$ signs. Assuming $$$d_n=l$$$, the answer is minimum of $$$dp(n,j)$$$ over all $$$j<=k$$$.

    Recursion: Consider computing $$$dp(i,j)$$$. One candidate for $$$dp(i,j)$$$ is $$$dp(i-1,j) + a_{i-1}*(d_i-d_{i-1})$$$. But it's possible that we removed the $$$(i-1)$$$th sign, so we drove at speed $$$a_{i-2}$$$ from $$$d_{i-2}$$$ all along, so $$$dp(i-2,j-1) + a_{i-2}*(d_i-d_{i-2})$$$ is another candidate. Continuing with this reasoning, and also noting that we could not have removed more than $$$j$$$ signs, we get the recurrence:

    $$$dp(i,j) = min_{p<=j} dp(i-1-p,j-p)+(d_i-d_{i-1-p})*a_{i-1-p})$$$.

    Base case is of course $$$dp(0,*)=0$$$.

»
3 years ago, # |
  Vote: I like it +1 Vote: I do not like it

pretests were deadly :(

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Why is my solution for C giving WA verdict? 142521905

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    Among all possible (ans, prev) in dp[i-1][j-1], there might be such pair that the ans is bigger while the prev is smaller and it is better to transition from that pair.

    • »
      »
      »
      3 years ago, # ^ |
      Rev. 2   Vote: I like it 0 Vote: I do not like it

      Will you please elaborate more? Will this case arise only when temp1==temp2 has been happened previously?

      • »
        »
        »
        »
        3 years ago, # ^ |
        Rev. 2   Vote: I like it +1 Vote: I do not like it
        4 100 2
        0 1 5 6
        1 2 3 100
        

        Your dp[3][1] should be 8(5+3, removing the 2nd), because if we remove the 3rd, the ans will be 1+2*5, which is worse.

        And prev[3][1] will be 3 because the 3rd is not removed.

        But the best transition is when dp[3][1]=11 and prev[3][1]=2.

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it +1 Vote: I do not like it

          Thank you Ji_Kuai, I was also struggling with the same thinking what's wrong in it. Thanks to nyet for replying me with the link of this comment.

          But I am curious, like can't we do anything to this approach to get it better. Like at any (i,j) if we store all the possible (ans,prev) pair and using the one to calculate for further states. Tho it's more complex and inefficient. But can we do that? Will that give the right answer?

          And making the conclusion that "for calculating some new dp state, the stuff we are using for it must be unique in the sense that that stuff should be only valid stuff for that previous state" is right or wrong?

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            For the first question. It is obvious that for any pair (ans, prev), (a, b) is always better than (c, b) if a < c (the ans is smaller and prev is equal).

            If we use dp[i][j][prv] instead of dp[i][j] and store the smallest ans, it will be correct(But this will get MLE in this problem).

            • »
              »
              »
              »
              »
              »
              »
              3 years ago, # ^ |
                Vote: I like it 0 Vote: I do not like it

              Okay, one more, Just the last one Ji_Kuai, please! Why can't we make dp[currBoard][prevBoard] storing the minimum time currently on currBoard and the last board taken be prevBoard && maxCan[currBoard][prevBoard] storing the k value when we were there. Now my claim is that dp[currBoard][prevBoard] will update only when currMaxCan is greater the maxCan[currBoard][prevBoard] or when it is not updated yet!

              My code link -> 142507920

              • »
                »
                »
                »
                »
                »
                »
                »
                3 years ago, # ^ |
                  Vote: I like it +1 Vote: I do not like it

                I think your claim is correct. But it doesn't mean that you can return dp[curBoard][prevBoard] when curMaxCan is less than maxCan[curBoard][prevBoard].

                When the curMaxCan is less than maxCan[][], the return value for that should be greater since you can not close as much station as the stored dp value.

»
3 years ago, # |
  Vote: I like it +32 Vote: I do not like it

Ratings updated preliminarily. We will remove cheaters and update the ratings again soon!

»
3 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

If you were stuck at a problem <=C, Here are the video solutions,

»
3 years ago, # |
  Vote: I like it +52 Vote: I do not like it
  • Suggestions on problem D: Stop making ORIGINAL PROBLEMS.

I think testers should realize that, because this problem is very classical and is obviously an original problem.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +62 Vote: I do not like it

    for red guys only :)

  • »
    »
    3 years ago, # ^ |
    Rev. 3   Vote: I like it +1 Vote: I do not like it

    I don't think problem setters should avoid classical problems in div2 and div3. Div 2 and 3 are "educational" contest. Although problem D uses classical idea, not everyone (especially experts and below) have seen it before, and they can learn in this contest, which is good for them to study.

    The problem is good to use if only you are not able google the problem by the statement online.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I don't think problem setters should avoid classical problems in div2 and div3. Div 2 and 3 are "educational" contest.

      I thought Educational Codeforces rounds were created as "educational" contests, not the regular Div. 2 rounds.

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it +9 Vote: I do not like it

        Yes, there is educational contest, although the frequency is not much. But since problem D is a master level problem (difficulty rating > 2100), I think it's OK to use it in the div 2 since red and orange users are unrated.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Hello, no, I don't realize that. When I solved this problem, I did not remember anything like that.

    Moreover, I liked this problem more than all the others I have solved in the original contest.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

In case anyone else is struggling with TLE in problem D with Java, I needed to do both of the following to make it fast enough:

  • Don't store each number once for each bit i.e. each trie node should only contain a single number. During the step where you need to find all the numbers under a node, you'll need to run a separate DFS to get them all.
  • Don't use objects. Use preallocated arrays as "fake" objects (e.g. https://codeforces.me/contest/1625/submission/142532132)
»
3 years ago, # |
  Vote: I like it +17 Vote: I do not like it

LONG STATEMENTS made bad reading experience.

A good contest anyway.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +6 Vote: I do not like it

    These are original statements from BelOI.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      To be more precise, Russian version of the statements is the original version, and English statements are just translation near to the original. Also, there was partial scoring on the olympiad, but it was removed for Codeforces to allow only full solutions.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Video Editorial for Problem C: Road Optimization

I explain my 2 dimensional dynamic programming solution along with the intuition for why DP is used (and not greedy) and how one can come up with the recurrence.

»
3 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

https://codeforces.me/contest/1625/submission/142524915

Want to know what is wrong with my approach

My approach for C was as follows:

  1. I find the index of all the signs, which when removed decrease the total time.

  2. Now I just need to choose at max k of these candidates for removal.

  3. this is where DP comes in, I apply it on the preselected candidates.

IF while choosing value of current k>0 than I have 2 option

1.)either choose to remove(insert index in a set named removed)

2.)Ignore and move to next candidate

ELSE Ignore and move to next candidate

for base case after completely going through all the candidates , I have a set of chosen sign's indices(i.e signs which should be removed). So considering that these set of removed signs as not being present, I calculate the total time taken and return it.

I memozized this using a dp[501][501] array.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    If $$$a=[1,99,3]$$$ and $$$k=2$$$, do you include $$$3$$$ in your candidates? (Clearly, removing both 99 and 3 is optimal.)

»
3 years ago, # |
  Vote: I like it +19 Vote: I do not like it

Here is slightly harder version of problem D. Source: this comment.

»
3 years ago, # |
  Vote: I like it -19 Vote: I do not like it

printf("Codeforces Round #765 (Div. 2)");

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

bruh imagine waking up at 4am on US west coast to do div2 contest, just to give up after 15' of trying to read problem A.

  • »
    »
    3 years ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    That's similar to my experience: I woke up at 6:30 AM (normally I wake up at 8 AM or later) on US east and after reading problem A's long statement I started feeling dizzy and then gave up.

»
3 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

How do you quickly find out whether we should use greedy algorithms or DP for optimization problems like C? The only clue that I found for C is the input size: 500. This might imply that we can use O(n^3) DP. If I don't know this size, I might spend time on thinking about possible greedy solutions.

(By the way, I didn't participate in this contest but I read and solved A, B, and C. I think they are interesting problems.)

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Solve dp problems on timus for 3 days straight prior to the contest lol, totally not me

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    The simple answer is that if you can't prove your greedy solution, you can't be sure it works. In this case it's reasonably easy to construct a counter-example; in other cases it's more difficult. If you can't prove greedy and you can see a DP solution, it's likely to be safer.

»
3 years ago, # |
  Vote: I like it +5 Vote: I do not like it

Problem E2 is very interesting! I love this problem.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

where tutorial? in tourist's stream?

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Can problem C use Convex Hull Optimisation to solve it?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +21 Vote: I do not like it

    Yes, I solved it with convex hull after the contest.

    Code : https://codeforces.me/contest/1625/submission/142559648

    dp[i][j] is min time required to reach ith city using j road signs. So the transition is like dp[i][j] = min (m<i) dp[m][j-1] + (d[i]-d[m])*a[m]

    The transition part can be written as a line like y = dp[m][j-1]-d[m]*a[m] + d[i]*a[m]

    The slope is a[m] and the intercept is dp[m][j-1]-d[m]*a[m]. We can pass in d[i] and get the minimum using convex hull trick.

»
3 years ago, # |
  Vote: I like it +10 Vote: I do not like it

thrilling round :)

Spoiler
»
3 years ago, # |
  Vote: I like it +14 Vote: I do not like it

excellent round with strong samples and pretests.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I could attempt only 2 problems and now my rating went down ;-;. How2 time management on easy questions. Aaaaaaa I wanna get to green so bad.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

can anyone find problem in my code for problem D i am getting WA on test case 14. I am using bit trie, sorting and segment tree. after sorting if i am at indx i than first i will find the maximum element such that it's xor with current element is greater than or equal to k. Now i used dp since we can select any element which is less than maximum element(mx) so i made a segemnt tree on values of dpi's. dp[i]=max(dp[j]+1) for all j such that a[j]<=mx Then to update value of current element we just query of the prefix from 0 to mxid(index of maximum element) dp[i]=query(0,mxid)+1;

Code

»
3 years ago, # |
  Vote: I like it +27 Vote: I do not like it

where can i get editorials to this contest

»
3 years ago, # |
  Vote: I like it -19 Vote: I do not like it

Can anyone guide / help / suggest me on how to reach expert (1600+) rating at codeforces...... I am currently specalist.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +4 Vote: I do not like it

    Just try to solve 3 problems in div 2 contest.

    After the round read the editorial and solve D and E problems.

    Keep doing this, then you can nearly always solve at least 3 problems in div2 contests.

    You can be blue even purple then.

  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    in my experience, you need to consistently solve ABC problems div.2 in 1 hour

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Could someone please explain why greedy wouldn't work for C?

»
3 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Some hints for people stuck at debugging problems C and D.

anonymouspegion

Input
Expected Output
Your Output
Comment

Dev_Manus

Input
Expected Output
Your Output
Comment

_Enginor_

Input
One Valid Output
Your Output
Comment
  • »
    »
    3 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    @variety-jones Can you please work your magic to show what goes wrong with this submission (failing on test 14). Thanks!

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      So I'm a personal assistant now? XD.

      Input
      A Valid Output
      Your Output
      Comment
      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Apologies if it sounded like I took you for granted. You are the savior!

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Any hint for Problem D

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

when is the editorial? i think beluorusian regional olympiad has it, because for example in russia, we have editorials right after the contest

  • »
    »
    3 years ago, # ^ |
    Rev. 3   Vote: I like it 0 Vote: I do not like it

    Yes, but we have only Russian editorial now.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      so u are going to wait for the official English editorial instead of publishing your own?

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it -10 Vote: I do not like it

        There is no such thing as "official English editorial" in our Regional Olympiad, so we need to translate it.

        The editorial is going to be published today (considering UTC+3). Sorry for long delay.

    • »
      »
      »
      3 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      sorry but it's two days after the contest and there is still no editorial.

      coue any one explain how to solve E2, please?

      • »
        »
        »
        »
        3 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        We hope to publish the editorial today (i.e. before 00:00 UTC+3). Sorry for long delay.

        • »
          »
          »
          »
          »
          3 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Thank you for your effort anyway.

          Can't wait to read the editorial

          • »
            »
            »
            »
            »
            »
            3 years ago, # ^ |
            Rev. 2   Vote: I like it 0 Vote: I do not like it

            It's available now. Thanks for your patience.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't know if the authorities can see it. It is the first time FOR me to play CodeForces, because I handed in the same code with this number and my trumpet and was targeted by the authorities. I hope you can listen to my sincere explanation.

»
3 years ago, # |
  Vote: I like it +3 Vote: I do not like it

I don't know if the authorities can see it. It is the first time FOR me to play CodeForces, because I handed in the same code with this number and my Tuba and was targeted by the authorities. I hope you can listen to my sincere explanation.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Is it possible to do C in O(n^2)?

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Where editorial ? Where banana?

  • »
    »
    3 years ago, # ^ |
      Vote: I like it +39 Vote: I do not like it

    Apparently all their limited time got used up in storytelling about Martians. Priorities, you see.

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Why is the editorial so slow?