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

Автор chokudai, история, 4 года назад, По-английски

We will hold AtCoder Beginner Contest 184.

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

We are looking forward to your participation!

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

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

Solving D is the main target!!!!

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

good luck

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

Hope I can get at least 4 problems!

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

Good luck!

I hope I can solve E.(I'm too vegetable.)

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

In problem C, the third move in example 3 from (-247,253) to the destination point does not satisfy any of the three conditions! Does the problem setter have any explanation?

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

C is not good for Problem C in ABC and I don't like it :(

But other problems are great and interesting.

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

Problem C isn't a ABC style

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

how to sove expected value questions

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

Why the answer to the last example in problem D is 91.83..?

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

Time limit for problem E(in Java) is a bit too strict.I have applied the fastest IO method with silly optimizations still it misses out on 4 cases.

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

Aren't E and F classical problems?

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

How to get rid of TLE in E(in Java)??

I have used fastest IO still it fails

My submisssion:-https://atcoder.jp/contests/abc184/submissions/18340875

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

Looks like I finally need to learn expected value

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

How do you solve D ?

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

    We can create a dp[a][b][c]==prob that that state happens. Then add up the propabilities.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится -13 Проголосовать: не нравится
      Then add up the propabilities

      I think we need to add "probability multiplied by number of steps to reach a,b,c". Whenever you are helping someone , elaborate completely or don't do at all. Many a times it just confuses people more.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится -7 Проголосовать: не нравится

        Fuck you, idiot.

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

          Sure . I am not bad-mouth as you are. But then how am i wrong ? You have written "propabilities" , what the heck is "propabilities" ? Also if "Then add up the propabilities" was true then wouldn't be answer of every input be 1. Question is asking expectation and not sum of probabilities .

          People who have downvoted , please downvote , but again these are people who confuse beginners more in name of helping . I was once beginner and i understand that.

          spookywooky you keep complaining about contest problems and editorials whereas you yourself cannot explain properly .

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

            I love spookywooky's explanations , they're not deliberately explicit enough to become spoonfeeding which is great if you still don't want to miss out on the satisfaction you get after solving the problem yourself and this doesn't mean someone doesn't know how to get the point across. Again it's a personal opinion. Also I don't know many users here who document there thoughts in their contest submissions like spookywooky does which helps a lot sometimes.

»
4 года назад, # |
  Проголосовать: нравится -10 Проголосовать: не нравится

That was again nice beginner contest. C was a bit clumsy to implement.

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

    how to solve C?

    • »
      »
      »
      4 года назад, # ^ |
      Rev. 7   Проголосовать: нравится +5 Проголосовать: не нравится
      Observation
      What to do with this
    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I did some research on this problem. I will try to explain what I understood. Here is my code. Ok.

      step 0: When source and detination are same

      step 1: It will require 1 step to reach destination when it satisfies the 3 given condiitons.

      step 2: when

      -AA(it will take 1 step because it seems like it lies on the same diagonal)

      -AB(it is the case when 2 diagonals meet. so (a+b)%2==(c+d)%2. Correct me if its wrong)

      -AC(when 1st and 3rd conditions satisfy. Then check for(abs((a+b)-(c+d))<=3))

      -BB(it will take 1 step because it seems like it lies on the same diagonal)

      -BC(when 1st and 3rd conditions satisfy. Then check for(abs((a-b)-(c-d))<=3))

      -CC(when 3rd condition satisfy 2 times so instead of checking for 3 check for 6(abs(a-c)+abs(b-d))<=6)

      step 3: other than 0,1,2 it is said to be 3

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

        When 1st and 3rd conditions satisfy why should we check for abs((a+b)-(c+d))<=3 wouldn't it be always zero. Could you please explain

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

          yeah.. what It mean is it require 1 step to travel along the diagonal and 3rd condition is for checking if it lies with in squares. so A+C.

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

            Could you please tell the intuition behind checking the condition abs((a+b)-(c+d))<=3 if 1st and 3rd conditions satisfy. Thanks in advance.

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

              ok what i understood that I will exlpain. Its all my imagination. See in this 3rd condition abs(a-c)+abs(b-d)<=3. I felt like abs(a-c) is for rows and abs(b-d) is for columns. see c+d is the diagonal for destination point. so if the difference between these 2 diagonals are less than or equal to 3 then it means it lies within the squares of the destination only right!!. Even the logic is same for BC also. Hope you understood.

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

Lol C was more hard than E to me.

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

For F, how to know backtracking + meet in the middle has good enough time complexity?

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

    We can create the table of size 2^20 for first 20 items. Then do the same for the other 20 items, and combine each entry of the first table with the optimal one from the other in O(logn). ie binary search for the value.

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

      Thats exactly what I did but still got WA on 8 cases. Can you help me debug?

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

    The constraint on N is small, i.e, 40. So if we divide it in 20 and 20 and then compute subset sums for the right half and left half using recursion, it will have a time complexity of 2^20, which is doable.

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

How to solve C and D?

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

    C: Observe that all fields are reachable with 3 moves. This is, because all fields (chess coloring) with same color are reachable with two moves.

    So, check if dist==0. Then check if dist==1 by implementing the rules as given in statement.

    Then check if dist==2, that is same field color or manhattan dist<=6. Or if destination point+3 fields is on one of the diagonals.

    Else dist==3

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

      I was still wondering at the end of the contest why it is not reachable in two moves, yeah it is because of chess coloring :/

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

      How chess coloring is happening in the board ? There can be adjacent cells with same color ? Please explain what you really mean .And what is "dist" here ? You should define "dist" first.

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

        chess coloring is that cells sharing a border have different colors, like you know it from chess board.

        dist is short for distance, the result we are searching for. sorry for that ;)

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

          You are more confusing now .

          chess coloring is that cell sharing a border have different colors

          How does that answer my question : How chess coloring is happening in the board ?

          dist is short for distance, the result we are searching for

          But according to your explanation its number of moves.

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

      Nice idea in problem C. Can you explain me, why you use abs(a-c)+abs(b-d)<=6

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

        Well, its two steps. In one step we can go manhattan distance 3, so in two steps manhattan distance 6.

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

How to solve D??

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

    Dynamic Programming
    My submission should be self-explanatory
    Submission

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

    I thought about the reverse process, let's build state a, b, c from all possible final states. That way I can add 1 directly while computing expectation from successive states, probabilities of transition remain the same, but the expected value of answer is now expected value of states a, b, c. Transitions are namely (a+1,b,c), (a, b+1,c) and (a, b, c+1) multiplied with respected probabilities ,of course if its a valid state. Submission Link

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

I think there is a mistake in problem E... I wrote a simple BFS that should never visit a node more than once (and never try to visit a node more than 5 times due to teleport — using the fact that the closest 'a' character to the start should be the one that uses all of the potential 'a' teleports); so my algorithm should be O(m) where m is the number of edges in the graph, but it does not work because of TLE.

I wrote my code in C++

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

this is what happens when people complain about easy tasks in Beginner Contests.

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

D was the most toughest for me...could anyone share approach?

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

My C solution passed all test cases except one. Anyone has any ideas on what it would be?

»
4 года назад, # |
  Проголосовать: нравится -15 Проголосовать: не нравится

I think ABCs aren't good anymore :(

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

    I think you ain't working hard anymore :(

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

      Ok I solved up to E. I didn't solve F because I don't know meet in the middle. This contest was just about knowing or don't knowing algorithm. If you know you will solve, If you don't know so you can't solve. A and B were as always. C wasn't good at all as others say. D was just about knowing expected value. E wasn't anything more than one BFS. F was meet in the middle.

      For all of those if you know the technique you can solve else you can't. Is this contest good?

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

For problem E: using teleporters as edges got me TLE submission but when I added a simple check if the current teleporter letter was used before it passed submission. Can someone explain why is this happening, because I thought since the distance should be less it will not add it to the queue anyway. Is it just the loop that's causing me a TLE?

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

    No, the idea of keeping a visited array is a must to avoid tle, because lets say you are traversing the point with 'a' then if this is the first 'a' you have encountered then all other 'a' will be marked with their best distance (thats how bfs works) and hence when you next encounter a 'a', you dont need to again update the weights of other 'a' because they are already marked to their best.

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

Can someone explain solution for C.

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

Can anyone please tell me why a simple BFS in E is giving me TLE in 3 cases. I am unable to think of any edge cases in my implementation.
My Solution.

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

    imagine a grid with full of 'a', this code would have the complexity of n^2 * m ^ 2 then

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

      Thanks, got AC now. I had implemented that initially but commented it later.. :facepalm:

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

    My first submission also got time limit exceeded so I applied this logic , look once visiting a particular character 'a' in minimum number of moves say 'd' then mark all the unvisited positions that has character 'a' as minimum distance = d+1. Now notice that this character 'a'(assumed here) is no longer use so u can erase it from your adjacency list. Mine such approach passed all test cases. Hope it helps and provide u the sufficient idea. My Solution Link

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

Can someone explain D like I am an idiot please. Thanks.

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

    https://sapphireengine.com/@/2ptnop You can refer this to understand

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

    Let $$$p[i][j][k]$$$ be the probability that we currently have $$$i$$$ gold coins, $$$j$$$ silver coins, and $$$k$$$ bronze coins. Initially, $$$p[a][b][c] = 1$$$ and otherwise $$$p[i][j][k] = 0$$$. We update

    $$$p[i+1][j][k] += \frac{i}{i+j+k}\cdot p[i][j][k],$$$
    $$$p[i][j+1][k] += \frac{j}{i+j+k}\cdot p[i][j][k],$$$
    $$$p[i][j][k+1] += \frac{k}{i+j+k}\cdot p[i][j][k].$$$

    For every such $p[i][j][k]$ where exactly one of $$$i, j, k$$$ is equal to 100, we simply update our answer by

    $$$((i+j+k) - (a+b+c))\cdot p[i][j][k],$$$

    where $$$(i+j+k)-(a+b+c)$$$ represents the number of turns needed to reach state $$$(i, j, k)$$$.

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

      I think your solution is wrong,

      I think the probability at i,j,k would be $$$p[i][j][k]= \frac{i-1}{i+j+k-1} * p[i-1][j][k] + \frac{j-1}{i+j+k-1} * p[i][j-1][k] + \frac{k-1}{i+j+k-1} * p[i][j][k-1]$$$

      Am I missing something???

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

        You're right, I meant to write $$$+=$$$ instead of an $$$=$$$ for each equation. As we go through the dp the updates will accumulate into the equation you wrote.

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

      Thank you so much, I tried a similar thing but failed so I was really confused. Thanks for the clear explanation

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

where are the solutions?

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

[Problem E] This is the first time I successfully hardcoded a solution on AtCoder during the contest. I thought the test cases on AtCoder are invincible too.

I guessed random_32.txt to consist of all dots except the start and goal and hardcoded for that accordingly.

Before hardcode - https://atcoder.jp/contests/abc184/submissions/18340539 (I still do not know why this TLE)

After hardcode - https://atcoder.jp/contests/abc184/submissions/18341941 (This should break and TLE if I add a hex anywhere)

Readable version of the code - https://atcoder.jp/contests/abc184/submissions/18346808

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

Can anyone please tell their approach for problem F. Using knapsack approach gives TLE

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

    Try to think about meet in middle, calculate all possible sum of weights of 2 equal parts of the input array and think of obtaining answer as combination of each value from first set with best value from the other. Ofcourse best answer might just come from one part only, so take care of that separately. Time Complexity will be O(2^(N/2)) with 2 pointers or with a factor of N if you're lazy enough :p

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

      Just curious would this approach be intuitive if we don't know about meet in the middle algorithm xD Thanks for your approach by the way.

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

      Yeah. But two pointer will work only if I generate the sum in sorted order. Can you tell how to generate subset sum in $$$sorted$$$ order.

      Edit: — Also how factor of N will not come? I have to go through the n/2 bits position right? so complexity will be $$$O(N2^{N/2})$$$. If I am wrong please point it out.

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

        Oops missed the sorting part, yeah its N * 2^(N/2).I meant factor of N over 2^(N/2) making it resulting complexity.

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

C was tougher than F for me

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

My video editorial. Uploading took a long time.

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

https://atcoder.jp/contests/abc184/submissions/18351753 please someone suggest me a way to get over TLE will be great help! problem E! c++ code

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

    // tele[c].clear();

    The above line is correct, uncomment it, and place it after the loop. Each portal letter need to be traversed only once.

    Otherwise consider N=2000 grid and all cells marked with 'a', it will result in O(n^4) runtime.

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

    My first submission also got time limit exceeded so I applied this logic , look once visiting a particular character 'a' in minimum number of moves say 'd' then mark all the unvisited positions that has character 'a' as minimum distance = d+1. Now notice that this character 'a'(assumed here) is no longer use so u can erase it from your adjacency list. Mine such approach passed all test cases. Hope it helps and provide u the sufficient idea.My Solution Link

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

why we don't get editorial after the contest what if some one not able to solve the problem where should we discuss.

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

Pre-req for solving E and F ??

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

[Problem C] It seems that they added a test case of something like this, that made my wrong code fail after the contest

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

in problem C I am getting 3 WA. I tried but I am unable to find the mistake. The test cases are also not uploaded yet. I am getting WA at random_09.txt,random_10.txt,random_11.txt. Can anyone help me with this

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

Help! I got WA for the Task E and only because one wrong answer of the case "random_23.txt". I have no idea now Submission #18364982

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

    the_Miracle if (i != tmp) { dist[i.first][i.second] = dist[tmp.first][tmp.second] + 1; vis[i.first][i.second] = 1; Q.push(i); }

    The above lines are creating errors. Use !vis[tmp.first][tmp.second] to update.

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

Can someone tell me why my code, gives a TLE for the problem E.

LINK : https://atcoder.jp/contests/abc184/submissions/18365487

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

For Problem C: Please give me a condition where need three moves. I can't understand why I can't go to any destination in two moves.

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

    In the sample input, there is one that require 3 moves

    2 3
    998244353 998244853
    

    If you want a simpler example

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

F is way too standard and even available on GeekesforGeeks. I understand that ABC are for Educational purpose but I don't think it's a good idea to give problems in ABC that are just a click away from googling.

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

Is space required in structure binding in C++17? I noted the different behavior on AtCoder between for(auto [x, y]:vii) and for(auto [x,y]: vii). It's so weird. See 2 submissions: 18566943 vs. 18566919.