We will hold Sky Inc, Programming Contest 2023 (AtCoder Beginner Contest 329).

- Contest URL: https://atcoder.jp/contests/abc329
- Start Time: http://www.timeanddate.com/worldclock/fixedtime.html?iso=20231118T2100&p1=248
- Duration: 100 minutes
- Writer: cn449, yuto1115, evima, chokudai
- Tester: math957963, Nyaan
- Rated range: ~ 1999
- The point values: 100-200-300-350-475-500-625

We are looking forward to your participation!

I <3 AtCoder. When I visit Nihon, I want to visit AtCoder office.

Completely clueless on E :(

Saw 3 WAs of Forested, got demoralized further.

M is bounded by 5,it's a simple bfs solution.

Can you share your code

Sure,here is the link — Code

today's D realize me, how poor I am in building logic :(

If you know segment tree you can do it easily.

Codeit's just a if logic block bro! segment tree is OVERKILL!!

Right, its an overkill. Just saw this beautiful solution:

Thank for the compliment, cuz my solution is exactly the same, lol

Yeah, exactly once u realize that u don't have to pop and update, simply just keep pushing into max heap, it's piece of cake.

My Codelol, we actually dont need to pop out xD

same here,

my solnhttps://atcoder.jp/contests/abc329/submissions/47696485

Me with my vector<set> and unordered_map solution be like: AMATEURS..

Link: https://atcoder.jp/contests/abc329/submissions/47726639

you could have just solved it using heaps tho

Array is enough. One additional variable to keep track of smallest id, You can just keep track of largest one yet on-line. Like the maximum subarray problem, but not exactly.

Can we solve F using bitsets?

you can merge small sets to large sets to reduce time complexity,here is the code

codehttps://atcoder.jp/contests/abc329/submissions/47726296

Small-To-Large Merging

Harder version of problem E (with outputting the operations)

Here from Coding Ninjas.

Any Hint for F

small to large merging technique submission

I got tle for 6 test cases but passed all 38 cases. I Didn't check small and large set. Is this the reason for the tle?

Yes.

That will cost $$$O((n - 1) * (n - 2) / 2)$$$

assume all the boxes contain exactly $$$1$$$ ball of distinct color than all others.

Suppose adding left set into the right set in merging. Now if you start merging like below. $$${ \newline \text{1 + 1 (costs 1 iterations)} \newline \text{2 + 1 (costs 2 iterations)} \newline \text{3 + 1 (costs 3 iterations)} \newline \text{....} \ \newline \text{n - 1 + 1 (costs n - 1 iterations)} \ \newline \text{total iterations} = (n - 1) * (n - 2) / 2 }$$$

Thanks. Can u explain problem E also. I have no clue how to solve it!

I couldn't solve problem E during the contest but upsolved it by seeing a beautiful submission by callmepandey.

So we can solve this problem with dp (ofc), as we can see size of stamp is so small so for each index we can match the character to the character of the stamp.

For string $$$S$$$ the first character should be matched to the first character of the string $$$T$$$ same for the last character. Now we will check for each index in $$$S$$$ in the range $$$(2, N - 1)$$$ so will try match the current character with the character in $$$T$$$, based on the previous matched indices. There are few case works.

Why we need to check for both original and reverse string?

No we need not to check twice! (maybe he tried to be safe).

I did without that. Submission

okay

okay

what is the complexity of swapping two sets??

Its constant time ie O(1)

really!! how can swap do that?

It exchanges the reference pointers for the respective variables!

E is just a modified DP version of this problem (but it took me too long to recognize that)

Not a bad problem though

Can you share your submission?

please elaborate

We want to build a string $$$S$$$ and in this case our "dictionary" contains $$$\frac{m(m + 1)}{2}$$$ strings (some of the substrings of $$$T$$$ might be the same).

The only difference between

Word Combinationsand today's problem is that some prefix of $$$S$$$ should be a prefix of $$$T$$$ and some suffix of $$$S$$$ should be a suffix of $$$T$$$ as well (not just any string from the dictionary). After this the problem is reduced to the cses problem, also we don't even need a trie to solve it, brute-forcing all substrings of $$$T$$$ at each position works as well due to a small $$$M$$$.P.S. I just call every

`check if some target is reachable with given parts`

problem a knapsack problem, not actually sure if that is accurateCan I see your code? How does your solution handle this?

It's not the prettiest piece of code that I've written, but it works

SpolierHere state 1 means that some suffix of $$$T$$$ has matched fully. If before some suffix hasn't matched fully — I need to start with a fresh prefix

Not sure if I actually need the extra 0-1 dp state, maybe just checking that a prefix and a suffix have matched is enough

Ah, okay. Now I see why it works, it seems like your explanation before wasn't complete.

I wouldn't suggest calling this knapsack dp since it isn't that — it's just dp. People will get confused and you'll need to explain further. And also, your solution didn't actually reduce to Word Combinations since you need the check with fully matched suffixes, but I admit that the solutions are still quite similar.

My bad, the explanation was incomplete indeed. The similarity with Word Combinations only occurred to me after the contest has ended and I was frustrated with myself that I didn't see the correlation earlier

1st Code: https://atcoder.jp/contests/abc329/submissions/47740404

2nd Code: https://atcoder.jp/contests/abc329/submissions/47740408

Why is the first code giving WA and Second code AC?

The only difference is the order of loop(forward in first and reverse in second).

Can you explain your idea?

Passed ABCDF in 19min, but E was always WA x 1 :(

The "swap" in question F is the key if you use map or set, otherwise it will TLE