We will hold AtCoder Beginner Contest 352.

- Contest URL: https://atcoder.jp/contests/abc352
- Start Time: http://www.timeanddate.com/worldclock/fixedtime.html?iso=20240504T2100&p1=248
- Duration: 100 minutes
- Writer: yuto1115, cn449, ynymxiaolongbao, kyopro_friends
- Tester: sotanishy, toam
- Rated range: ~ 1999
- The point values: 100-200-300-425-450-525-600

We are looking forward to your participation!

Yay, hope to solve E and F.

GL&HF!

Good Luck!Hope F!

GL&HR!

Bad luck and low rating!

Why bad luck?

什么？？？

Please talk in English（请用英语对话）

Good luck!- Hope to solve F and G.

Why were F and G so hard in this contest???

Hope to have good luck，and solve F and G! (But I know that's impossible LOL).

for problem E , what's the part of my solution that giving a TLE ? is it constructing the graph ??

Yes. You don't need the whole graph.

What do you mean by not taking the whole graph? Does it mean omitting to take all edges we get for each K_i and C_i?

you can use dsu

You can sort first and not use the whole graph

I think Sum of K over all M is 10**5 as in the fourth line of the constraints.

Constructing a undirected graph will be M squared which is 10**10 which will TLE

I think you can use an algorithm similar to Kruskal's.

You shouldn't use an algorithm with $$$n^2$$$, that may cost $$$100$$$ seconds.

I don't understand. Why does my code WA on 4 testcases?

Can anyone help me why I am getting WA on 2 testcases for this solution of F?

hey aryanc403, Im eagerly waiting for your youtube video discussion. those are great. When will it come today

You can find my solution ideas in this linkedin blog

I have an AC submission here, you can use this to generate counter tests. https://atcoder.jp/contests/abc352/submissions/53146457

On line 181 of your latest submission, the return value of this function is a boolean, but you write

`return ans`

. While`ans`

here is either`tr`

or`fal`

and both of them are positive integers, so the real return value is always`true`

. I just changed this and got Accepted.Nice catch. Thank You.

It would have taken me forever to debug this.

Does anyone know why I am getting Runtime Error for this submission for D? Is there any issue with the DSU implementation ?

https://atcoder.jp/contests/abc352/submissions/53139365

what's the idea behind F?

Hello! I'm just a mediocre problem setter who is wondering how to give many many many D&C NTT problems which has almost the same solution quickly. May Atcoder Beginner Contest help?

UPD: I don't know whether ironies are just unwelcomed in codeforces or it's not the right place to discuss a problem which has only 143 solves with many newbies? Please, tell me the reason if you decide to downvote me @_@.

UPD 2: Maybe next time I'll try "DCNTT in ABC G author's solution, are you retarded?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????".

Of coz,ABC is a great way to improve your poly skill quickly.

UPD:In fact I agree with wyrqwq's opinion.I think he's not saying that D&C NTT problems are not good,but too many similar D&C NTT problems in ABC are not interesting.

They are meant to be educational for beginners, as it says in the name. ARCs and AGCs are held to (much) higher standards.

I think it's not educational to put many tasks with a same algorithm again and again. It's just a sign of lack of responsibility and lack of time to polish a contest.

probably you don't know that atcoder has acl and you can just call convolution in your solution without knowing what is ntt

That is indeed helpful during contest time. But that doesn't help me learn the algorithm itself. Am I just participating in ABC only for getting a higher rank?

I am trying to understand your frustration. if author's solution used

`std::set`

/`std::map`

how much author is retarded?Are you saying: if author's solution contains

`int main()`

how much author is retarded?please no puzzles just answer

Am I not clear? If you don't have the ability to hold a good ABC round every week, hold it every two weeks. If you cannot educate beginners but just keep creating trashes, stop using the name "beginner contest" but "atcoder library contest". If you cannot come up with a different G-placed problem from NTTing, stop posting problems for Atcoder and leave the company. In reply to your question:

`std::set`

and`std::map`

are STL containers, and you are sure to learn them long before you understand how a balanced search tree works.I'd rather agree with unpopular opinion of wyrqwq.

I completely don't understand the point of ACL. What is it designed for? I never use it and never will, because I try to improve or at least to keep up my coding skills, first of all. Also, for those who can still participate in official onsite contests, it is really harmful and, I suppose, many of real beginners will suffer from not being able to implement any specific variety of data structure adjusted to specific problem's requirements when they have no access to online resources and ACL. If they need to take a higher place and get more rating, that's completely their choice, although I don't really think it is quite educational.

As for the name "AtCoder Beginner Contest", it's really misleading. Despite being not really high-rated lately, I wouldn't call myself a beginner. However on average I solve only

`6`

problems out of`7`

. Actually, at least a couple of problems are tricky and educational in almost every round, and they genuinely require a certain effort from me. And normally problem-setters should at least try to avoid similar problem ideas in adjacent contests, which may not be the case for ABC, unfortunately. I think this what wyrqwq meant if to throw away the emotional wording.loved F, thank you for contest!

What was the method for F? I was roughly trying to brute force on all non-trivial connected components, (each connected component of size > 1), because I knew 16! would be too slow, but 16 * 8! might pass.

Yes, you can actually do brute force, but instead of factorials think about placing components.

Solved D with a segtree

All I can see now are segment trees

"Yes" != ("YES" || "yes").

LOL, still case sensitive on output strings.

Randomized solution for F gave me some hope for a moment

what was your solution?

For E, I forgot to handle this disconnected case:

SpoilerMy submission still gets AC, even though I didn't output

`-1`

for the above case.Could someone help me debug E? I've been absolutely confused for the second part of the contest and still can't understand where the WA is coming from: https://atcoder.jp/contests/abc352/submissions/53123170

brother, iam doing the same, but still wa

Did you figured it out yet??

i looked at Ac code he used vector<pair<int,vector> E(M) and sort it.

aren't we doing the same thing using map(which automatically sort by first value)

i think i got why we are failing, because it stores only uniques values there might be some subset having same edges weight but different components, but our map is assuming it's a single components!!

Fails on following testcase.

SpoilerAnswer is

`-1`

because graph is disconnected. You cannot directly merge all components with same cost.Not sure i got what you mean, my code outputs -1: https://ideone.com/pnCDk1 I only merge when I'm taking a new edge into MST:

Ah, okay, i finally got it. The test case should probably be

or smth similar

Yes. I messed up with input format. https://ideone.com/TYhyXr

Yeah, looks completely ridiculous i haven't thought about it now. I was so focused on trying to find an error in my Kruskal's implementation i completely overlooked the fact map can merge a couple of cliques together. Thanks for the help!

Try this one:

SpoilerGood luck !!!

Speedforces and Speedcoder :)

E Submission

What's wrong here?

SpoilerFails on following testcase.

SpoilerAnswer is

`-1`

because graph is disconnected. You cannot directly merge all components with same cost.Thanks, i have figured it out!!

Could you help explaining me? I still don't get it

When you join the contest late by $$$5$$$ minutes and get $$$F$$$ accepted after the contest end by $$$4$$$ minutes:

I would like to share my solution to problem F(taking me about 90 minutes to get accepted), as follows:

Divide all the nodes(people) into several connected components, and suppose that there are cnt of them

For each component, compute all the feasible rankings, and denote them based on bitmasks

Use dp[i][j] to denote that, for the previous i components, whether we can achieve the state of j or not, and also use set last[i][j] to store the previous states that can reach j. Here, the state means the bitmask of rankings

The final state should be (1<<n)-1, and we start from last[cnt][(1<<n)-1], and check whether the current state is unique or not. If it is unique, then we have unique rankings for the nodes within this component

Could you please share the code as well

my code

can anyone figure out where i am going wrong in E.

`https://atcoder.jp/contests/abc352/submissions/53149749`

For this test case:

SpoilerAnswer should be -1, because node 6 is not connected. Your code does not output -1.

Figured out was making mistake in finding the leader @llc5pg

Can anyone give a hint on how to optimize problem E?

I did understand the part where we could build a graph from all the given weights (using DSU) and then apply Kruskal to find the MST, but I saw the limits on K and understood this solution would result in TLE.

Try using prims.

Recognize that some of the edges are redundant and use minimum spanning tree algorithm, kruskal or prims. For example on ignoring redundant edges, you only actually care about joining nodes into the minimum spanning tree if they are disjoint. And you can join all nodes to just a single node representative of a connected component.

By redundant edges, do you mean multiple edges b/w (u, v)? How are you ignoring the redundant edges?

My Approach: For every k_i and c_i, we can sort the k_i vertexes Then, there will be k_i * (k_i — 1) / 2 possible edges (u, v) with c_i weights

In this k_i alone, we won't be getting any multiple edges, but in subsequent k_i, we can get (but for that also, we must do k_i * (k_i — 1)/2 to check which have been already done or not)

Is there any better way to do this ? Above approach will also result in TLE, because there can be atmax N * (N-1) / 2 pairs of (u, v)

Can someone help me with problem E? Why my code is giving wrong answer on some test cases, even though I have also used the same logic as most others. Submission

to solve $$$E$$$ do I need to learn any algorithm?

You need two-three topics to solve this problem:

Minimum Spanning Tree (MST)

Kruskal's algorithm for finding MST

The most crucial observation for this problem can be inferred from the listed topics:

Spoiler with the idea itselfYou can replace each clique with any spanning tree of it. All edges within a clique have the same weight, so we may just use one of the clique's vertices connected to all other vertices of the clique.

thanks for help

We are connecting all k-1 nodes to one node in a clique. What if we required to connect any two nodes from k-1 nodes?

The button "Custom" is gone.

What is the logic behind the question c please also provide me the java code for it

this contest was totally fixed and made me bored. abc352 is one of the boring contests ever. abc352 fixing and boring. abc353 is genuine and much interesting with sigma problems.