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

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

We will hold THIRD PROGRAMMING CONTEST 2023 ALGO(AtCoder Beginner Contest 318).

The point values will be 100-200-300-400-450-575-575-650.

We are looking forward to your participation!

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

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

F score=G score?

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

You are right, but Genshin Impact is a new upgraded open world game adventure game independently developed by the official of MiHoYo. Mobile games originated in a world called "Tivat", where the chosen person is given the "Eye of God" to guide the power of the stars. We will play a mysterious character named "Traveler" who meets friends with different temperaments and different abilities in his free travel. We will defeat the strong enemy with them and find the separated family. In addition, we will gradually discover the truth behind the "Genshin Impact".

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

F seems to be hard this time.

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

Is there anyone from Hongfan NO.8 Middle School in China?

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

it 's worth to be expected

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

AtCoder people don't watch Japan's Basketball match? :D

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

I only did three questions...

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

How can D be solved with Bitmasks?

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

Very cool tasks! Solved A — F (F is the most beautiful as for me). Thanks!

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

What was solution for D?

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

If you go deep into the standings you can see some curious things:

First example
Second example

What's the point of this anyway? Trying to disrupt the judge and the contest? Somehow inflate the ratings? (don't google atcoder rating inflation)

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

I get 14 penalties in D...

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

For problem G, why does the following not work? Doing a bfs from node B and checking if nodes A and C are visited or not

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

E<<<D.

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

Isn't G just checking if we can reach c from b without crossing a and similarly reach a from b without crossing c and just check if we traversed any bridge edge more than once in the whole process. I could only pass 76/93 using this..can anyone please point out the mistake.

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

What algorithm doesn't be TLE of D?

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

Editorial of D: Use bitmasks DP to enumerate all possible methods

Me: SIKE I am abusing the wide variety of libraries in Python to solve this

import networkx as nx
G=nx.Graph()
edge=[]
n=int(input())
adj=[[0]*n for i in range(n)]
for i in range(n-1):
  li=[*map(int,input().split())]
  for j in range(i+1,n):
    edge.append((i,j,li[j-i-1]))
    adj[i][j]=li[j-i-1]
G.add_weighted_edges_from(edge)
a=sorted(nx.max_weight_matching(G))
ans=0
for i,j in a:
  ans+=adj[i][j]
  ans+=adj[j][i]
print(ans)
»
3 года назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I wish there was a way to filter out submissions based on the programming language.

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

Why does problem G need network flow? I only use Yuanfang tree to solve this problem

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

I think my E should have worked but it gave WA. Can anyone tell me where I got it wrong.

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

Was problem E easier than D?

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

I used a shrink point to solve G, but it got WA. Can anyone explain why this is?

code here

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

Oh my god, I wasted so much time on D. I don't know why, but I even used min cost flow on that problem...

my submission

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

https://atcoder.jp/contests/abc318/submissions/45195803 What's wrong with my approach to problem E? I can't figure out. Please Help.TIA.

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

May I ask if we can solve G without network flow?

And also,can someone explain to me the meaning of "mf_graph" in the atcoder library or give me a link to let me know about it?

thanks.

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

How to do F?

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

    (Maybe different approach from editorial) Let us draw $$$N$$$ graphs of $$$y=|x-X_i|$$$. We can see that there are at most $$$O(N^2)$$$ intersections, and so the order of distance changes at most $$$O(N^2)$$$ times. The rest can be done for each possible order of distances. (Check the possible intervals between each adjacent $$$x$$$-coordinate of the intersections) Everything can then be done in $$$O(N^3\log N)$$$. There is an $$$O(N^2\log^2 N)$$$ solution improving from this, but I just don't want to explain that one.

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

I struggled on Ex for a long time and realized that my solution is completely wrong 50min after contest XD

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

In this problem, we can use an algorithm called Round-square tree. In a round-square tree, each of the original points corresponds to a round point, and each extremely large point bi-connected subgraph corresponds to a square point.

This is editorial of G. And i want to ask what is each extremely large point bi-connected subgraph?

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

in problem G I tried to find if there is a path from A to B not going through C and from B to C not going through A anyone can provide a counter test or explain why this idea is wrong?

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

I solved problem D with bitmask dp, but different from all solutions I've seen in comments. $$$dp[mask]$$$ is the best solution for that mask. Then we have that $$$dp[(1«i)|(1«j)] = d[i][j]$$$, where $$$i \lt j$$$. Then for every mask we iterate through all of its submasks trying to find an optimal solution. Time complexity is $$$O(3^n)$$$.

Code

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

Can anyone help me with my submission on G? Link

I tried to find a shortest path from A to B, then deleted all nodes in a shortest path between them (expected B), then I found a shortest path from B to C. If it exists, the answer is Yes. Then I tried to do the same thing with tuple (C, B, A). But I received WA verdict. I have tried to generate many random tests but I can't find any wrong case. Thanks.

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

Why does the following solution not work for G? (73 AC, 20 WA)

Create a DFS tree rooted at $$$A$$$. Denote $$$lca(B,C)$$$ as $$$BC$$$.

If $$$BC = B$$$, there is a straight path $$$A\to B\to C$$$.

Otherwise, there should be a back edge from the subtree of $$$B$$$ somewhere before $$$BC$$$. Say there is a back edge from $$$V$$$ to $$$U$$$, where $$$V$$$ is in the subtree of $$$B$$$, $$$lca(U,BC) = U$$$ and $$$U\neq BC$$$. There is a path $$$A\to U\to V\to B\to BC\to C$$$.

In other cases, there is no possible path.

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

    Basically, you're not forced to go to strictly below B via an back edge, you can very well land above B because of the other back edges. I am pretty sure there can't be any usual dfs tree solution

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

In editorial of F, how can we say it confidently ? When its elements are sorted in ascending order as S1, S2,…, S∣S∣, then for each 2≤i≤∣S∣, all x with Si−1 +1≤x≤Si satisfy the condition if and only if x=Si does.