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.
it'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.
lol, we actually dont need to pop out xD
same here,
https://atcoder.jp/contests/abc329/submissions/47696485
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
https://atcoder.jp/contests/abc329/submissions/47726296
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
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 Combinations and 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
Here 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
Passed ABCDF in 19min, but E was always WA x 1 :(