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

Автор _LeMur_, 2 года назад, По-английски

Hi, Codeforces!

I'm glad to invite you to take part in Codeforces Round 917, which will take place on Dec/24/2023 17:35 (Moscow time). Round will be rated for participants with rating less than $$$2100$$$. Participants from the first division can take part out of competition.

There will be $$$6$$$ problems for $$$2$$$ hours. The problems are authored by IgorI, zidder and me.

Part of the problems in this round were in the Yerevan SU 28.1₀.₂₀₂3 Contest. If you participated in it or know at least one problem from it, please refrain from participating in this round.

We would like to thank

Scoring distribution: $$$500 - 1000 - 1500 - 2250 - 2500 - 3000$$$

We hope you'll like the problemset! Good luck and have fun!

UPD 1: Editorial

UPD 2: Congrats to our winners:

  • Div1 + Div2
  1. tourist
  2. Sugar_fan
  3. BurnedChicken
  4. Rubikun
  5. kotatsugame
  • Div2
  1. -Misaka-Mikoto-
  2. _chashuibiao_
  3. needy_and_sorry
  4. Godjob
  5. LordVoIdebug
  • Проголосовать: нравится
  • +281
  • Проголосовать: не нравится

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

]

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

Great!!!

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

As a tester, I recommend trying all of the problems (really good ones). Also I wish everyone positive delta as a Christmas present:)

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

I will try it!

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

^_^

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

As a tester, I want to reach pupil after this round

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

Looking like speedforces:( because D is 2250.

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

hggnigan This round is good?

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

CM TIME

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

participate cf contest on Christmas Eve (east Asia time) this is really a round 😂

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

Big point difference between C and D

»
2 года назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
╱|、
                      (˚ˎ 。7  
                       |、˜〵          
                      じしˍ,)ノ
»
2 года назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

Hopefully I become a master after this contest!

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

Maybe I can reach specialist by the end of this year :)

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

As a tester for the 1st time,i feel proud.

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

Yo

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

Hope to become Expert.

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

I will finally give a Cf contest. Lets go.

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

As a contestant,I want to reach pupil after this round btw

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

best wishes for every one

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

Clicked me now, why all are LGM here

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

As a kawazaki I will participate

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

AbduSaber First tester from Sohag, Egypt :) , remember this name very well -_- .

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

Hope to solve all the problems!

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

As someone who has a birthday, please give me a contribution.

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

Really weak sample for C. Is it fun to see players wa2 again and again?

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

my last unrated contest

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

Hope will become expert

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

unbalanced forces !

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

Defeated by constructive round. so sad.

update: now I'm defeated by the FST XD

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

Am I missing something or does D effectively boil down to:

  • Calculate inversions within P.
  • For each i, calculate number of values in P which would be its inversion for relative power shifts between -20 to 20.
  • Iterate over values of Q, and check how many occurances of [Q_i — 20, Q_i + 20] lie before it and add them to the answer.

I spent 15-20 mins thinking of how to simplify this to something I could implement without going insane before giving up and going to problem E instead...

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

Whoever made C deserves lifetime sentence in jail.

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

How to approach B?

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

    Sum of the first occurrence of each character is the answer. Suppose we have s = "abeakf". Then if we consider 'a' is the first character, we will have ["abeakf", "aeakf", "aakf", "akf", "af", "a"]. We only need to care about the first position of character 'a' in s, because if we tried to used the second 'a', the result string will be duplicated (these are "akf", "af", "a")

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

    Essentially, the only difference between strings after "i" operations is the first letter. That's because you can't reach the other characters through these operations. However, that initial letter could be any letter present in the prefix of length "i" of the original string. So, you calculate the number of unique letters in each prefix and then sum them up. That's basically the answer.

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

    check the string from left to right, if i th character has not appeared before, answer += n-i

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

    I thought of that in this way. Suppose you have a string "ayush",now if you want to find all the strings of size '4', "ush" will always be there so the string will be "_ush" now for the first character look at how many distinct characters we have encountered before we reach 'u' (2), so there are two possible choices for the first character. Do this starting from size 'n' to size '1'. Hope this makes sense to you!

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

still don't know why in C, when I tried to iterate min(n, d) times, it gave me wrong answer, since I thought it is enough to make the array big. I used a large number instead like min(5000, d) and got AC.

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

I tried to solve B using DP, but got Memory Limit Exceeded at test-case 3, anybody else tried it using recursive DP, or DP?

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

how to solve 'B'!!!

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

what happens if you submit right answer twice for pre tests?

i submitted D twice to avoid tle later.

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

Can anyone check why my code for C is wrong? I have been staring at it for 1+ hour and couldn't find the problem.

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

C is greedy af

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

I have skill issue.

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

The problem set is crazy :)

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

D always getting wrong answer on pretest 5, what a sad Christmas Eve :(
BTW, could anyone please tell me what's wrong with my code 238736754 ?

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

Not putting N = 2, K = 2 in the samples of E is cold-hearted lol :P

Also imagine debugging WA on E for 15 mins after "handling" this case just to make this fix and get AC ._.

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

Условие задач написано неправильно или непонятно

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

Couldn't solve $$$C$$$. How to learn to notice all, what needs to be noticed?

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

    You don't need to do so. Its just that after you do a reset operation then you can't get score greater than 1 after any number of operations. So its optimal to take a score of one from first element greedily after doing 1 reset operation

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

    How many can you get from first reset op?

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

    Here is my solution by the way, which didn't passed probably because of bug in implementation.

    Fix an element in array $$$a$$$. I want to know, when it is good, i.e. $$$a[i] = i$$$. If $$$a[i] \lt i$$$, then after some movements on array $$$v$$$ it will become good, then it will become bad forever. Sounds like scanline. Let's calculate for all elements of $$$a$$$ the segment of numbers of operations of type 1 after which the element is good. Process them in decreasing order. Fix $$$i$$$. Then all $$$v[j] \ge i$$$ change element $$$a[i]$$$. I want to know the position in cyclic array $$$v$$$, after which $$$a[i] = i$$$, i.e. I want to know $$$(i-a[i])$$$-th element of array $$$v$$$ with only elements which $$$v[j] \ge i$$$. Assume, they are in some structure. Let there are $$$x$$$ satisfying elements in array $$$v$$$. Then I need to traverse the whole array some number of times, and them some prefix. So I need to be able to find $$$k$$$-th element. I can do it with Cartesian Tree (Декартово Дерево), or with "indexed set" (google "cses.fi Josephus Problem II").

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

div1 difficulty

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

Can someone pls explain an approach for C?

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

    My English is not good,in my opinion,the sequence is like stairs,because it can be added to ans when it equals to it position,so every time you do opreation [1,b[i]] +1,it will break the stairs,so if 1-n is 0,only 1 or 0 can be added to your ans after several +1 opreation. To be the best,you can do opration 1 once and do opration 2 once.In this way you can add 1 to ans for two oprations. after understand it,you can make a brute force on array 'a' to Calculate the best ans. it will be allowed on O(n*n) , you can according to my ans 238725053. I Hope i can help you.

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

Thank you for spoiling the mood for the new year :(

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

Codeforces ------- NO
Speedforces ---- YES

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

why we need to check 2*n instead of n in C?

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

optimizing knacksap with bitset is uninteresting

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

I think div2 B should be easier or I'm not participate enough

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

Please explain why tourist's solution to problem C 238680690 passed the time limit. I think the condition in the for loop is doing the optimization, but I do not understand why.

for (int u = 0; u < d; u++) {
   if (n + (d - 1 - u) / 2 <= ans) {
     break;
   }
   ...
}
»
2 года назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится

noting to say, but good night

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

min(n, k) gave wrong ans so i submited it with k i forget about k = 1e5 after wrong ans test 3 now waiting for fst :( now +60 will turn int0 -60

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

E: You are given an even integer n and an integer k

I missed the "even", I would have been able to solve it if I noticed that. Now I think I have a working solution for the odd n. Could have been a nice E1 and E2 problem.

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

This contest was OVERKILL for me :(

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

Why did my solution to C pass? I don't understand why it works.

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

C became a scam

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

Can anyone tell me what's wrong with my code for task C? I have WA2 and O(n * log^2 k) asymptotics. 238736328

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

You guys were solving B with a set?

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

Why so many solutions fsted on C?

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

I love this round.

I love the super-weak pretest in C, which make me fst.

I love the interesting problems C and D, which made me stuck in implementation and debugging.

I love the random constructive problems taking the place of E and F, which makes the diffculty distribution so unbalanced and weird.

Oh. How I love it.

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

Thank you for the weak test cases for problem C.

Now I can reach Expert with the help of FSTs.

By the way, thank you for the awesome round!

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

I wasted 15 minutes because I put n instead of 2n as the limit of days to use second op in C, but least my n log²n D didn't TLE'd and I'll need to use magic to become purple again :)

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

my color changed twice in 2 contest :D

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

Not inserting a test into the pretests for one of the most possible error patterns in C is a bad Christmas gift.

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

c

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

A to C was fine. but D was too much

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

actually 2n days will give n points so if we waste 2n days then automatically we will get the max value i.e. n so if we are acquring n points after 2n days it is a waste its better that we just do the second operation then

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

Merry Christmas everyone!

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

Thanks for round! Tasks were really cool.

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

Beautiful problem F! Thanks!

»
2 года назад, скрыть # |
Rev. 6  
Проголосовать: нравится +8 Проголосовать: не нравится
I have a different solution for D than the intended one :p, and doesn't use the fact that p is a permutation

Here is my code : 238726631

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

In Problem C: Checking over the v sequence only once was enough to pass pretest. At least this major corner case should have been included in pretest which is in test no. 26 :(

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

test 26 of problem C is like the grinch :(

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

I liked Problem E very much, thanks _LeMur_! I upsolved it. My idea with 6 was following: if k is small, then print the diamond of 6 ones on the first 3 lines of matrix, then fill squares of 2x2 on the following lines. And symmetrically opposite: if k is large, then subtract k = n*n - k, and do the same with inverted bytes.

Somehow my Perl code is running notably fast. Submission — 238764454.

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

    Problem E-bonus (n can be odd):

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

C is really good but i didnt solve it during the match TwT

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

Guys,my rating for recent educational round was taken back.Is there anyone who is having the same problem?