Lewin's blog

By Lewin, history, 6 weeks ago, In English,

Here's the tutorial. Code can be found in this link (more will be added there soon): https://www.dropbox.com/sh/xwxn3zrl1icp3i2/AACtYSdYH0KlTEdVgCFFgPrYa?dl=0

Zoning Restrictions Again
Double Matrix
Hide and Seek
Chladni Figure
Thanos Nim
Palindrome XOR
Rainbow Coins
Zigzag Game
 
 
 
 
  • Vote: I like it
  • +117
  • Vote: I do not like it

»
6 weeks ago, # |
  Vote: I like it +9 Vote: I do not like it

Peace on you :) Thanks a lot for this Amazing contest ever at least for me :)

»
6 weeks ago, # |
  Vote: I like it +71 Vote: I do not like it

E was cool, D was very easy (IMO).

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it -16 Vote: I do not like it

    what u think about hide and seek problem??was it easy for you??

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

      Man see his rating carefully. And then that of the question. You will get your answer.

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

        How to code like them bro...I try a lot but still every time new question of dp and trees comes i cant think of any solution...

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

Nice Proof of Greedy Solution of B , how to solve B using dp (just for curiosity)

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it
    • »
      »
      »
      6 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      can you explain the recurrence relation

      • »
        »
        »
        »
        6 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        We track partial solutions f[i][j] and g[i][j]. f[i][j] = true iff the solution exists and last elements (in position i and j) in both matrices ARE NOT swapped. g[i][j] = true iff the solution exists and last elements (in position i and j) in both matrices ARE swapped.

        How to calculate f[i][j] and g[i][j]? f[i][j] = true in a few cases: - f[i][j] may be based on f[i-1][j] and this means that a[i][j] > a[i-1][j] and b[i][j]>b[i-1][j] because we didn't swap elements in position i-1 and j. - f[i][j] may be based on g[i-1][j] and this means that a[i][j] > b[i-1][j] and b[i][j]>a[i-1][j] because we swapped elements in position i-1 and j (because we suppose g[i-1][j]). At least one of these conditions should hold, and we did a row check.

        The same two conditions for a column check: i and j-1 positions of elements.

        The same conditions should hold for g[i][j]: just swap a[i][j] and b[i][j] in conditions.

        Finally, f[n-1][m-1] or g[n-1][m-1] should be true for "Possible" answer.

        Please, let me know if you have any questions.

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

          https://codeforces.com/problemset/submission/1162/54663882 can someone explain what i am doing wrong. i created 2 new arrays c and d. in c i place the min(a,b) provided it satisfies the increasing condition else i place the other one if it satisfies the increasing condition else the loop breaks. in short i have tried to make c by selecting the value given by above approach and placed the unselected value in d. at last i checked if d is increasing or not. It is showing error at 7th test case. Pls let me know if there is something wrong with the approch or the code.

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

      Hello, can you tell me why normal checking and swapping i.e suppose a[i][j] >= a[i][j+1] then swap(a[i][j],b[i][j]) is not working ? or if a[i][j]>=a[i+1][j] then swap(a[i][j],b[i][j]) and then doing the same with matrix b? Code

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it
»
6 weeks ago, # |
  Vote: I like it +19 Vote: I do not like it

The problems of this contest was good. :)

»
6 weeks ago, # |
  Vote: I like it +19 Vote: I do not like it

Sadly I didn`t do my best at this contest, but the problems were really good!

»
6 weeks ago, # |
  Vote: I like it +21 Vote: I do not like it

My solution for E only used 4 queries.

https://codeforces.com/contest/1161/submission/53759655

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

    Interesting. 4 is also optimal for $$$n$$$ large enough, since 3 is impossible when $$$2^{1.5n} < 3^n/6$$$.

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Can anyone help me with the B. If aij<=bij how does it ensure that there will always be a correct solution. Suppose aij<=bij and aij+1<=bij+1 but aij>aij+1 and bij>bij+1. Then even if the configuration is valid there can't be any solution.I couldn't understand it. Please help me with it.

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    The configuration a[i][j]>a[i][j+1] and/or b[i][j]>b[i][j+1] is not valid. Therefore the existence of such a configuration would mean that there is no solution as per the proof which is given above. So output=>"Impossible"

    Basically, after all the swapping is done(i.e. a[i][j]<=b[i][j] for all i,j) and we still have any configuration with either a[i][j]>=a[i][j+1] or b[i][j]>=b[i][j+1], we can be sure that there is no possible solution.

»
6 weeks ago, # |
  Vote: I like it +33 Vote: I do not like it

Great contest (Y)

Wondering how everybody answered Thanos nim. Had a hard time figuring what was the insight for the game :)

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

    I wrote a brute force for $$$n = 6$$$ and $$$0 \leq a_i \leq 5$$$ and outputted the positions where Bob wins. From those positions the solution is obvious.

»
6 weeks ago, # |
Rev. 3   Vote: I like it +53 Vote: I do not like it

Lol, no test in div1b had n = 83160 or something close to a highly composite number. My code takes like 8 seconds on n = 83160, m = 200000 and random values of segments (this generator). The highest number of divisors seems to be 48 on 51450 when it could've been 128 on 83160.

Maybe such a test could be added to a testset?

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

    Maybe it didn't affect anybody but tests for 1161D - Palindrome XOR seem weak too. Judging from prefixes of tests, all big tests are just random characters ?01. Maybe there is some smart pattern in some, but I don't see any test e.g. with just characters 1 or just ?.

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

    Thanks! arsijo added it to the tests yesterday. It's my bad T-T

»
6 weeks ago, # |
  Vote: I like it +15 Vote: I do not like it

I didn't fully understand why in Div. 1 — B we can simply check for the divisors of n. Could someone try to explain it a bit better or with an example ?

  • »
    »
    6 weeks ago, # ^ |
    Rev. 2   Vote: I like it +7 Vote: I do not like it

    Let's suppose that image is rotationally symmetrical and image consist of p identical blocks. Then every block has length of n/p. Then if we rotate image by n/p units, the new image will be the same as the original one. Now we can brute force the value p among the divisors of n and check if the rotation i + n/p is correct.

  • »
    »
    6 weeks ago, # ^ |
    Rev. 3   Vote: I like it +7 Vote: I do not like it

    Let a segment be [a,b] when we rotate it by k it gets [a+k, b+k] to be symmetrical there should be a segment [a+k, b+k] which after rotating will move to [a+2k, b+2k] or we can say that all possible values can be [(a+xk)%n, (b+xk)%n].

    r = (a+xk)%n = a+xk-qn

    xk — qn = r — a

    Use bezout identity euqation has solution if r-a is c*gcd(k,n) or r = a+c*gcd(n,k).

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

I recieved a system message that the solution of my first question Div2A Zoning Restrictions significantly matches with that of someone named MetaFish, but I even don't know the person and didn't use Ideone like things by which code can be shared. It may be just a pure coincidence as doing first question there are huge chances of matching the code, so I want to clarify this as it was written in message to comment on the post that I did code on my pc and then using browse submitted it.

»
6 weeks ago, # |
  Vote: I like it +13 Vote: I do not like it

Actually KMP can solve D by regarding the original and rotated images as two strings and match them together. Time complexity can reach O(m) (use the correct way of vector comparison).

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Can you help me in a bit more explanation on what to store in the vectors of original and rotated images? Kindly reply.

»
6 weeks ago, # |
Rev. 4   Vote: I like it +1 Vote: I do not like it

Can anyone explain E to me ? "The main claim is that if a player is forced to reduce the minimum number of stones over all piles, then they lose."

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

can you give idea for solving for Problem — A for 1<=n,h,m<=10^9

»
6 weeks ago, # |
  Vote: I like it -11 Vote: I do not like it

I am not being able to understand the question of Div-2 (C) Hide and Seek... please someone explain me the question??

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

    Same bro

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

    Bob will ask Alice k questions (if Alice is in the i-th cell ? ) . On reply.. Alice can answer yes or no. At most one time in this process, before or after answering a question, Alice is allowed to move her token from her current cell to some adjacent cell.

    Consider the first example: << Lets say, {x,x,x} is ALice's answer on Bob's 3 question. Here , x = y(yes) or n(no). >> there is a subsequence (5,4) on Bob's question. Since Alice can change the position at most once, here 3 cases can be arrived. 1) if she changed before 5 , her answer will be {n,n,y}; 2) if she changed on between 5 and 4, answer {y,n,y}; 3) if she changed after 4, her answer {y,n,n};

    Now consider a subsequence that is not present in Bob's question list. Let it is (3,4) in this case , she can change position after 4, her answer will be {n,n,n};

    And the question says, "Alice acted in such a way that she was able to answer "NO" to all of Bob's questions." As you just see .. if there is a subsequence , Alice's answer will must contain at least 1 yes.

    And since Alice can move to an adjacent cell only, There are 2*(n-1) + n subsequence on their playing ground. So all u have to do is .. somehow erase all those culprit subsequence from our all possible subsequence set. Thats it ! :3

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I have modified a question a little bit.

    Alice and Bob are playing a game on a line with n cells. There are n cells labeled from 1 through n. For each i from 1 to n−1, cells i and i+1 are adjacent.

    Alice initially has a token on some cell on the line, and Bob tries to guess where it is.

    Bob guesses a sequence of line cell numbers x1,x2,…,xk in order. In the i-th question, Bob asks Alice if her token is currently on cell xi. That is, Alice can answer either "YES" or "NO" to each Bob's question.

    At most one time in this process, before or after answering a question, Alice is allowed to move her token from her current cell to some adjacent cell. Alice acted in such a way that she was able to answer "NO" to all of Bob's questions.

    Note that Alice can even move her token before answering the first question or after answering the last question. Alice can also choose to not move at all.

    You are given n and Bob's questions x1,…,xk.

    Lets say p1 is cell where token placed before starting game. and p2 is a cell where token is placed after the game. note that (1 <= p1 <= p2 <= n).

    and a pair (p1,p2) is valid, if Bob answers 'No' for all questions when alice choose this pair. and you have to count no of pairs, which are valid.

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

There is a bruteforce solution for B that works in O(nm * nm) time https://codeforces.com/contest/1162/submission/53760985

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    why so hard? my solution works in O(n*m) time and it is much easier
    http://codeforces.com/contest/1162/submission/53747942

    • »
      »
      »
      6 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      It's clear that the greedy solution works but the tutorial says that brute force doesn't, so I sent this. Could be interesting to smb

      • »
        »
        »
        »
        6 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        can you explain your bruteforce approach , code is hard to understand without knowing the approach

        • »
          »
          »
          »
          »
          6 weeks ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          If we have an inversion in a matrix, e.g. a[i][j] >= a[i][j + 1], we can either swap a[i][j] & b[i][j], or a[i][j + 1] & b[i][j + 1]. After we make a swap, new inversions may appear in adjacent cells, so then we try to get rid of them the same way. That's how the recursive function works. We just need to launch it from each cell, and during one launch we never visit one cell twice, so it's O((nm)^2)

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

In 1147C - Thanos Nim

Solution

I didn't get this, suppose the piles are 1,4,4,4 how can we reduce (n/2 = 2 among 4,4,4 piles) to 1,1, It's said that they must be reduced by a different amount??

»
6 weeks ago, # |
  Vote: I like it +16 Vote: I do not like it

Can someone provide proof in Problem D that k must be a divisor of n?

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

    [Deleted]

  • »
    »
    6 weeks ago, # ^ |
    Rev. 2   Vote: I like it +5 Vote: I do not like it

    Well, I used two facts to prove it.

    1. turning by $$$k$$$ will yield the same result as $$$2k$$$, $$$3k$$$ and so on;
    2. turning by $$$n$$$ will obviously put the circle in the same position it was initially.

    Thus there exists some $$$t$$$ such that $$$tk = n$$$, $$$k$$$ is a divisor of $$$n$$$.

    • »
      »
      »
      6 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      By your logic 2k, 3k, ... must all divide n.

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

        I can't see how to come to this conclusion.

        • »
          »
          »
          »
          »
          6 weeks ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          Substitute k for 2k and apply the same logic.

          • »
            »
            »
            »
            »
            »
            6 weeks ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            Well, it becomes $$$2k$$$, $$$4k$$$, $$$6k$$$ and so on. If there still exists some integer $$$t$$$ so that $$$2tk = n$$$, why not?

            I don't get what can be unclear, sorry. Maybe try marking the $$$0$$$ point and checking where will it end after some turns. $$$k$$$, $$$2k$$$, $$$3k$$$, $$$\dots$$$ will be its position at each next move. Also it'll return to 0 (which is equal to position $$$n$$$) after $$$t$$$ moves.

      • »
        »
        »
        »
        4 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        i don't think the statement is valid. he said the k,2k,3k... will yeild same result and doesn't mean it will divide 15. lets i have an image, where n = 15, and k = 5. it will work when k = 5, k = 10. but when 10 wont divide 15.

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

    Let the minimum value to do a symmetrical rotation be $$$k$$$.

    Then for any $$$t$$$, such that $$$t \% k == 0$$$, $$$t$$$ will produce a symmetrical rotation too, and generally rotating by $$$t$$$ is the same as rotating by $$$t\%k$$$.

    It's obvious that turning by $$$n$$$ produces a symmetrical rotation.

    Let $$$n \% k != 0$$$, then that means that $$$n \% k$$$ produces a symmetrical rotation. But $$$n\%k < k$$$, hence this statement contradicts the first one.

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Guys please can someone help me? I can't access the Dropbox solutions, it returns an error saying "server IP address could not be found".

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    The link is working for me at the minute. Try again?

    • »
      »
      »
      6 weeks ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Tried again, as before, the link works fine but same error when accessing the solutions themselves. I tried different browsers and incognito mode but it didn't work. Jonny and others can you access the solutions?

      • »
        »
        »
        »
        6 weeks ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Yeah, I can access each one (Chrome, non-incognito mode, not signed into dropbox). So don't know what to suggest :S

»
6 weeks ago, # |
  Vote: I like it +2 Vote: I do not like it

Can someone please explain 1147B — Chladni Figure string solution.

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

Problem B DIV 1

"We can do this by iterating through all segments (a,b), and checking that (a+k,b+k) is a segment (the endpoints taken modulo n if needed)."

How can we check that (a+k,b+k) is a segment in o(1)? Tutorial says that "this gives an O(nm) solution".

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

    Since there are no perfectly overlapping segments maybe we can do something like — Transform a segment [x,y] into [x%k, y%k] and check final counts of segments appearing in the first block because [(a+k)%k, (b+k)%k] = [a,b].

»
6 weeks ago, # |
  Vote: I like it -8 Vote: I do not like it

Can anyone help me? I'm trying to implement a z-algorithm on 'Chladni Figure' problem and i get wrong answer on test 3 saying the output was "yes" and the correct answer is "no" and when i try it myself it shows the correct answer. What is the problem?

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

I am not getting the tutorial of Chladni Figure with fastest approach. please help!

  • »
    »
    4 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    lets you have only one segment. try thinking when that segment becomes rotationally symmetric ( try for k = 1, ..

    think when you two segments try thinking when that segment becomes rotationally symmetric ( try for k = 1, ..

    think when you three segments try thinking when that segment becomes rotationally symmetric ( try for k = 1, ..

    think when you have n segments. try thinking when that segment becomes rotationally symmetric ( try for k = 1, ..

    now you will understand when those segments becomes rotationally symmetric. if you wont get anything try for k = 1.. n and think about why k should be a factor of n.