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

Автор 127.0.0.1, история, 13 месяцев назад, По-русски

Привет, Codeforces!

max0000561, a.nasretdinov и я приглашаем вас на наш Codeforces Round 907 (Div. 2), который пройдет в Oct/30/2023 17:35 (Moscow time). Он будет рейтинговым для всех участников, чей рейтинг будет ниже 2100.

От лица всей нашей команды хочу поблагодарить:

И отдельное спасибо моим друзьям, которые внесли огромный вклад в этот раунд: Амиру a.nasretdinov Насретдинову, Максиму max0000561 Крылыкову и Тане medved Медведь. Также спасибо вам за все четыре года знакомства :)

На раунде вам нужно будет решить 6 задач. У вас будет 2 часа на их решение.

Разбаловка: $$$500-750-1000-1500-2000-2250$$$

Всем удачи и, пожалуйста, читайте условия всех задач!

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

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

Div. 1:

Div. 2:

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

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

Can't believe that mine is the first comment!

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

Wow, So exciting to see this round, I hope it will be interesting.

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

I hope I can reach Specialist.

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

As a tester, the problems are cool and interesting!

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

Hope to become pupil

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

Point distribution suggests all problems could be solved by average Div-2. But history suggests, Point distributions can be deceiving ... :D

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

Good luck and, please, read the statements of all problems!

Is there anything implied in this sentence?

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

as a friend of the author of the round, I predict that round will be great!

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

Message Notification system in telegram is very pleasurable for me . I almost forgot about this contest but telegram notification alerted me timely . Thanks to codeforces management system.

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

Kudos to 74TrAkToR for his decision about placing problem F at Div. 2 F!

He is the only coordinator who will make such creative decision!

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

Are you sure E and F should be in that order?

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

Good luck and, please, read the statements of all problems!

Lol, they knew F was easier than E

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

What was the idea of setting $$$1$$$sec TL in $$$D$$$???

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

    982 ms

    Clutched it

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

      Yes! I really don't understand why you should put a $$$1$$$ second limit, it makes it very hard to pass a python problem or a completely unoptimized $$$O(nlog(n))$$$ solution in $$$C$$$++. It's just an idiotic decision to put such a limit from the author! On the other hand the task is cool.

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

    That is probably because you are expected to precompute something?

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

In problem D, how to optimize it from q*60*60?

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

    You can do $$$O(q*60)$$$ by storing each consecutive range with the same values, and iterating through this range vector for final computation.

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

      For range [2^f, 2^f-1]. How are you recalculating g without iterating on all powers of f?

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

        I guess you mean $$$[2^f, 2^{f+1}]$$$

        In this range, there can almost be two such disjoint ranges, so I will binary search the point where the function changes.

        Calculating the given function is $$$O(log n)$$$, just simulate finding max power for which $$$base^{y} \leq x$$$.

        Btw I precompute these ranges, so each query is just $$$O(q * number-of-ranges)$$$

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

    f(x) ranges from 2 to 60 and for each f(x), g(x) is monotonic. Also for each f(x) if you check g(x) can have atmax 2 values. Precompute for all such ranges and answer it. tc: q*70 ig

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

      Yeaa!

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

      For each f(x), g(x) is monotonic. But how can we say that for each f(x), g(x) can have at max 2 values?

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

        What i did was just printed the g(x) value for start and end point for each f(x), i.e. 2^i, 2^(i+1)-1 and it turned out the difference between them is atmax 1. and since it is monotonic u can find the point where it changes using binary search.

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

        $$$x$$$ just almost doubles in this range

        For the function to take more than 2 integral values, we need X to be multiplied by $$$floor(\log_2 x)$$$ which is more than 2

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

        Hello sir . did u unnderstand why atmax only 2 values can be present. if so could u pls expalin sir

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

          Consider the range $$$[2^x, 2^{x+1}-1]$$$.Let y = f(x) >= 2. For some k, $$$y^k$$$ is somewhere between $$$2^x$$$ and $$$2^{x+1}-1$$$. So, $$$y^k \ge 2^x$$$. Then $$$y^{k+1} = y(y^k) \ge y(2^x) \ge 2^{x+1}$$$

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

      At first, I thought g(x) is monotonic on the whole range (not depend on f(x)), which give me wrong answer in the sample test case :((. Sad to be unable to solve D.

»
13 месяцев назад, # |
Rev. 3   Проголосовать: нравится +22 Проголосовать: не нравится

In my opinion, F is easier than C. I was stuck on C the whole contest, but figured out F 15 mins after seeing it.

Drop CM again :(

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

    Was F using dynamic segment tree?

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

      I used BIT, but I think segment tree works too.

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

      Another solution for $$$F$$$ without reversing queries!

      When you add $$$x$$$ to all values in subtree of node $$$i$$$, just add $$$x$$$ to $$$val[i]$$$. The answer for every node $$$j$$$ is the sum of $$$val[k]$$$ such that $$$k$$$ is ancestor of $$$j$$$ (Call this sum as $$$S(j)$$$)

      However, when you add node $$$t$$$ to the tree, then add node $$$t$$$ with $$$val[t]$$$ = $$$-S(t)$$$ in the current state of tree. This will "undo" the contribution of subtree sum addition due to queries performed before addition of node $$$t$$$.

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

        But how can we calculate -S(t) fast before adding node?

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

          Using a fenwick or segment tree. Adding $$$x$$$ to $$$val[i]$$$ means, add $$$x$$$ at $$$tree[tin[i]]$$$ and $$$-x$$$ at $$$tree[tout[i]]$$$. Note that $$$tin[i],tout[i]$$$ represent in-time and out-time of node $$$i$$$ respectively. Query sum of range $$$[1..tin[i]]$$$ to get $$$S(i)$$$.

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

Thanks for the great round

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

2^Forces

»
13 месяцев назад, # |
  Проголосовать: нравится -19 Проголосовать: не нравится

I don't believe that task E can be simpler than F

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

Thanks for the round! I enjoyed the problems, but F is absurdly misplaced. I spent less time on it than on any problem after B, and if it had appeared in position D I would not have thought anything was out of the ordinary; indeed, F had nearly as many solves as problem D did. (I also think F is a bit on the standard end, but it's fine for a Div. 2 only round.)

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

FForces

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

read the statements of all problems!

This means you should look at the leaderboard to decide on which problem to work on.

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

How can so many people solve F? i couldn't get any vaild ideas.

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

    I solved this using segment tree like on standart segment tree problems over the tree, but in reverse order of queries. When I see adding operation, I add number on subtree. If I see the query of adding vertex, I compute answer through query to segment tree since the next operations will not affect the vertex.

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

What can so many people solve F! i couldn't get any valid ideas.

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

wow system testing already ??

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

What is the 35th pretest?

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

good contest

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

Thank you for the beautiful round, loved it, although stuck on first problem till the end of time. Need some skills

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

D Problem, For 179 1000000000000000000 of sample testcase, I get 41949982 in my system and online IDEs, but I got 773751787 codeforces, What had gone wrong ? where should I look for ? my submission

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

    I think overflow on signed integers is undefined behaviour, so that's why it's giving different results as your overflow check will not be correct. I don't know how to escape the overflow other than to tediously change everything to int_128 or do the code in python(risk of TLE).

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

      Ohh thanks, I submitted in practice, It seems that was the issue, lesson learned :)

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

In F, the pretests were passed, but now I got MLE on test 16. The pretests were more than 16, so shouldn't it be tested in the pretests?

»
13 месяцев назад, # |
  Проголосовать: нравится -23 Проголосовать: не нравится

Like really bro? F is way too easy for being the last problem of this contest.

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

Can someone tell me why i am getting runtime error on Div2 B test 2?

Solution: 230578242

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

Isn't the range of unsigned long long till 2^128-1? In my local, it was overflowing on 2^70 only. Why?

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

    unsigned long long only goes up to 2^64-1

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

    Unsigned long long has a range of 0 to 2^64-1. There is int_128 which goes up to 2^128 but it is much more finnicky to use.

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

B can be cheesed, bad testcases i guess Link

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

230580209 can anyone try to help me finding bug in solution for D?

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

    Take a look at Ticket 17121 from CF Stress for a counter example.

    To help you debug, the testcase is constructed with $$$L = R = 2^{59}$$$. We have $$$f(2^{59}) = 59$$$, so we need to find the largest non-negative integer $$$z$$$ such that $$$59^z \leq 2^{59}$$$. It's easy to verify that $$$z = 10$$$ but your code produces $$$11$$$.

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

A round where everybody solved F.

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

Can someone tell what approach you used for problem c pls!!

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

B is kind of tricky, should some tricks.

»
13 месяцев назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Relevant intervals for D
  • »
    »
    13 месяцев назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    UPD: solved it

    How is it calculated? I used binary search but got different numbers.

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

      We can check every [2^x, 2^(x+1)). If answers are (between Left and Right corner) different, we can easly find the border. If not, we now understand that all this numbers under one value

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

      .

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

      Just binary search and check for 9, 1e18 + 100. This will give you the relevant intervals from 9-1e18. For 1-8 you can find them out just by observing.

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

I guess D is all about implementation

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

When do the ratings get updated? Thank you.

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

May I know why my 230532327 to B is skipped? 127.0.0.1

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

    Only the last "passed pretest" submission would be run in system test.

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

    it's because when you submit multiple correct solutions of a problem during contest, all the other accepted submissions (except the last one) of that particular porblem automatically get skipped.

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

My $$$O(Q*64)$$$ solution is doing TLE on test-case 10 https://codeforces.me/contest/1891/submission/230585018

my basic idea is between [2^q, 2^(q+1)], g(k) can only take atmost two possible values and I am combining them. Corner segments are handled separately.

Can I optimise it further or is it just too slow fundamentally, within the constraints I reckon it'd pass all the cases

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

    230563485

    Yes, if i have understand you correctly

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

    At first you have ipow function, so it's $$$O(Q \log R * \text{(max ipow exp)})$$$. And you have too much $$$\% modm$$$, and time limit is too tough.

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

    I think ur problem is correct but the result of ipow(lq,z+1) can overflow long long and became a negative number.

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

What is the deal with pretest 8 problem D? For 63 5153632, my code gives 20673255 whereas the answer is 20673256. I can't figure out how I'm missing the extra 1! Any ideas?

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

How to solve B?

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

    after we add 2^x to a number it will never be divisible by any 2^y where y>=x. Using this fact we can remove all unnecessary elements from array q after which it's length will be at most 30 and we can bruteforce it

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

Problems were really good!!

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

When will the editorial be? Or maybe I'm missing something? Thanks

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

why approach for F with euler tour + lazy prop is giving tle on tc 22. code- https://codeforces.me/contest/1891/submission/230589277

any help will be appreciated..

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

conragts to Gwynbleidd_ for finally reaching CM ( ME )

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

just wanted to see how this new color looks in comments

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

Hey, is it okay to check long long overflow using long double? I mean this :-

long double val = a;
val *= b;
bool overflow = val > LLONG_MAX;

Does anyone have experience with this? Even if it is not precise, can you get away with it during contests?

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

    I mean one scenario where this might come handy would be say you want to calculate log(1e18, 60) using a for loop. You loop through 1 to 10 and it's all <= 1e18 so you would want to check for 11, but that is where it overflows. But the above trick works here ig.

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

I don't think that ETO is an individual participant. The submissions from that account is suspicious.

Its code style in Problem A and Problem B matched. However, a new default source came up in Problem C and Problem D with different reading and multi-test handling method. The last two submissions are even more confusing.

Among these submissions, we can learn 4 ways to solve a multi-test problem, 3 ways to read a integer from stdin, 3 ways to set a constant value, which is shocking. It's easy to see that there are >1 members(possibly 4: AB+CD+E+F) so they should be unrated.

I believe I can beat the whole team if this contest is rated for me(they are too slow) but it's unfair to all Div.2 participants. plz unrated this account.

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

Why so many people solved F but only a few solved E?

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

Thanks,I reach master!!!I've waited a long time for this day

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

Thanks!I reach Candidate Master!

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

very nice contest! And I solve all problems!

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

Thanks a lot....I got my new best rating.

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

Thanks a lot... I got my new best rating..

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

Got the logic for D but implementation is tough.