chokudai's blog

By chokudai, history, 6 years ago, In English

We will hold AtCoder Beginner Contest 168.

The point values will be 100-200-300-400-500-600.

We are looking forward to your participation!

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

| Write comment?
»
6 years ago, hide # |
 
Vote: I like it +38 Vote: I do not like it

Unfortunately, the contest clashes with Kickstart Round C. Can you reschedule it?

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

It would be considerate of you if you can reschedule the contest, as it collides with Kickstart round. During the quarantine time, we really wish to attend contest.

Thank you :)

»
6 years ago, hide # |
 
Vote: I like it +4 Vote: I do not like it

It would be great if you guys reschedule the event, the number of participants will reduce due to the clash with Google Kickstart Round C.We really wish to participate in the maximum number of contests.

Thank you.

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

every Sundy holding a contest?

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

Could the Atcoder round be delayed by some hours, to allow Google Kickstart participants to compete in the same?

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

Are contests always held on weekends and last 100 minutes?

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

Where will we get the english editorial?

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

What's with AtCoder standings? They seem to keep loading since the last few contests

Basically, have to see this screen for most of the contest:

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

How to solve F??

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

    It looked like a monstrous casework problem where you first de-sparseify the x and y coordinates into a range 1 ~ 4000, and then do a BFS. I didn't debug my code in time though, since it was too complex :(

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

Hints for E, please.

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

    $$$A_i$$$ * $$$A_j$$$ + $$$B_i$$$ * $$$B_j$$$ = 0 can be written as

    $$$A_i$$$/$$$B_i$$$ = -$$$B_j$$$/$$$A_j$$$ = -1/($$$A_j$$$/$$$B_j$$$)

    Handle cases with A = 0 or B = 0 separately and simply multiply no. of choices from each "pool". A pool is values of $$$A_i$$$/$$$B_i$$$ that are x/y and -y/x.

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

      In second testcase I get 575 with this, which is 96 else than the expected ans.

      Somebody spot my bug?

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

      How did you make a pool? Can DSU be used? And how to rapidly search the values that would be grouped together?

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

I finished A B D in 10 min but could not solve C in 90 min. In the second sample test case, the angel is 60 degree, and a = 3, b = 4. why the input is 4,56... instead of sqrt(13)? Could anyone explain me? Thank a lot!

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

For E I stored the values of each A[i]/B[i] and B[i]/A[i] in 2 maps. Then it seemed like I have to exclude the ones not possible from the total possible ways...but I was not able to think of how to do that. Can somebody tell how or suggest a better method?

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

    We need to "normalize" the fraction, something like

    code

    Then we can search for every sardine the matching ones in a map. From that the number of possible sets should be toPower(2,n).

    But that gave wrong result for me. I done know why?

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

      The "normalizing" part is for handling division by 0 right?

      Wouldn't the number of sets be pow(2,n)-1 as we should exclude null set?

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

      I think it is due to 01 and 10 fractions, as they can't be in the same group. Try something like:

      4 1 0 2 0 0 1 0 2

      Answer should be 6

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

        For tc

        10
        3 2
        3 2
        -1 1
        2 -1
        -3 -9
        -8 12
        7 7
        8 1
        8 2
        8 4
        

        my output of program

        i=0 no. of bad values=0 bad sets till now=0
        i=1 no. of bad values=0 bad sets till now=0
        i=2 no. of bad values=0 bad sets till now=0
        i=3 no. of bad values=0 bad sets till now=0
        i=4 no. of bad values=0 bad sets till now=0
        i=5 no. of bad values=2 bad sets till now=24
        i=6 no. of bad values=1 bad sets till now=56
        i=7 no. of bad values=0 bad sets till now=112
        i=8 no. of bad values=0 bad sets till now=224
        i=9 no. of bad values=0 bad sets till now=448
        

        what im doing is finding if no. of bad values is >0 then i am doing (2^(val)-1)*(2^(i-val)) and adding them to ans and if val is zero then ans+=ans as that zero can be appended to any set prior to that

        So for i=5 (2^2-1)*(2^3)=24,for i=6 (2^1-1)(2^5)=32;so ans =24+56 till i=6; after that we are simply appending zeros so adding ans=ans+ans but i am counting less bad sets ,dont know where i am wrong

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

      can you explain the part where if p.first<0 then you are changing the sign of p.first and p.second?I have seen this earlier also but unable to understand the reason to change the signs.

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

        To make a fraction negative one can negate both parts. $$$\frac{-a}{b} = \frac{a}{-b}$$$

        But in this problem we need to find the inverted fraction in a map or set. For the comparator it makes a difference on which part the sign is, so we manually put the minus sign to the first or second part.

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

    I guess pair {A[i],B[i]} and {B[i],A[i]} storing will be better than your above approach as A[i],B[i]<=1e18 ,may be error came due to precision and don't forgete to divide A[i] and B[i] by their gcd before insert

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

C not so nice, had enough geometry for today. How works E?

I tried to find number of matching sardines by searching the frequency of the negative inverse of current sardine.

$$$s1.a/s1.b == -s2.a/s2.b$$$

Somehow this did not work :/

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

is there a way to see failed test in atcoder?

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

Give me hint for D, please!

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

How to solve E ?

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

    it's a straightforward bfs, but took me 1 hour to finish, guess i'm rusty now.

    basically you record the predecessors when you perform bfs, finally check if every vertex got a predecessor.

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

      Umm that sounds like D lol. I was asking the solution for E

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

        opps I posted at the wrong place, but I guess this explains the idea for E: https://codeforces.me/blog/entry/77505?#comment-624918

      • »
        »
        »
        »
        6 years ago, hide # ^ |
        ← Rev. 4  
        Vote: I like it +2 Vote: I do not like it

        My approach :

        $$$A_i.A_j+B_i.B_j=0$$$ can be converted into $$$A_i/B_i = -B_j/A_j$$$

        Total number of set is $$$2^n-1$$$ (-1 empty set).

        bad set when given condition violets :

        create a map having count of $$$A_i/B_i$$$ (Note : consider for cases $$$(0,0),(a,0),(0,a))$$$ , iterate over map and for every $$$mp[i]$$$ find count of $$$-1/mp[i]$$$ now we have three set

        first : $$$A_i/B_i = mp[i],$$$ second : $$$A_i/b_i = -1/mp[i],$$$ third : all renaming

        Total = Total — no. of set having at least 1 mp[i] and 1 -1/mp[i]

        sorry for my English

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

          but how will you find the no. of sets having atleast 1 of mp[i] type
          and 1 of-1/mp[i] type, without overcounting . ?
          will u please elaborate this part ??

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

Problem D stated that "One can travel between any two rooms by traversing passages" so an answer should always exist , isn't it ? What did I miss?

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

c & d were nice..

»
6 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it
»
6 years ago, hide # |
 
Vote: I like it +1 Vote: I do not like it

How to solve E ?

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

My approach for Problem D ->

For every node from 2..n , I found it's adjacent node that has smallest level from root i.e 1 using dfs and printed it. Can anybody give a test case where this will fail or tell why would this fail? Link to submission

Thanks !

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

How to solve F?

  • »
    »
    6 years ago, hide # ^ |
    ← Rev. 2  
    Vote: I like it +30 Vote: I do not like it
    1. Cut the hole plan into rectangular pieces(Based on the inputted x and y s). There are at most O(N^2) pieces.
    2. BFS or DFS to find the accessible rectangular pieces.

    UPD: my submission

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

      Can you please explain your approach a little more? and can you please just briefly tell me what do you do in your code after you separate out unique coordinates on both axes.

      • »
        »
        »
        »
        6 years ago, hide # ^ |
        ← Rev. 2  
        Vote: I like it +28 Vote: I do not like it

        After getting vector<int> xs and ys, split the plan into blocks like this.  (UPD: note that the index in the picture is a little different from the one used in my code)

        The yellow mark means that you cannot pass between the two blocks. I used l[x][y], r[x][y], u[x][y], dd[x][y] to denote wether block (x, y) cannot go left, right, up, down.

        Do a DFS/BFS to know which blocks are reachable.

        The answer is the sum of areas of the reachable blocks. Because there is -INF, and INF in xs and ys, if I can reach block (0, 0), the answer mush be INF.

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

    These days Atcoder is not publishing editorials in English, at least not anytime soon after contest finishes. I guess there are a lot of people who would want solution to F including me.

»
6 years ago, hide # |
← Rev. 3  
Vote: I like it +23 Vote: I do not like it

Brief solution sketches, before the editorial in English comes out:

A
B
C
D
E
F
»
6 years ago, hide # |
← Rev. 2  
Vote: I like it 0 Vote: I do not like it

Problem E. Here's my solution .(it's giving AC for half of the test cases).

Could anyone please tell me my MISTAKE. (apart from the fact that i need to take care of the {0,y} or {y,0} case separately).

https://atcoder.jp/contests/abc168/submissions/13350298

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

Check out my solution to problem B in this contest with a step by step code explanation!

https://youtu.be/HN_9VTFwiVM

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

I have tried On D using Bfs and finding the depth of each node, then I for each node I find the minimum depth in it's adjacent nodes with O(logn) and print it, so we get complexity of O(nlogn), but still I'm getting WA And TLE. can anyone help? Link to My submition: https://atcoder.jp/contests/abc168/submissions/13368080

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

    when you find depth you do depth[currentNode] = 1 + depth[parent] you don't need the depth. You just have to know who the parent of that node is, so just take depth[currentNode] = parent and print the depth array

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

      But we want to minimize the distance from vertex 1, so I think parent is not always best signpost for each vertex.

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

        Why do you think your logic to find the depth of a node works using bfs? because bfs always finds shortest path. Hence, if you found a node using bfs, going through that parent gives you the shortest path. My AC code

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

Can someone please tell me why my code is wrong for problem D? I don't have much experience in graphs yet so I can't figure out the mistake.Here is the link to my submission.

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

    what are you making pair for? you probably don't know how a bfs works, read on it and try coding it. I changed your bfs method and this works. check if you're still stuck after reading on bfs.

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

      Understood.Thanks. I will definitely try to learn bfs more. BTW,I found this approach on geeksforgeeks. The pair is of child and parent.

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

Can someone please tell me what is wrong with my code for problem E?

https://atcoder.jp/contests/abc168/submissions/13534282