About this blog
In Teza Round 1 (Codeforces Round 1015, Div. 1 + Div. 2), I finally reached the stage of Candidate Master. Candidate Master has a special meaning to me. May be I saw it as my official introduction to the programming competition. And now I have reached it.
This blog post is about my memories and reflections on reaching CM, as well as some of my own experiences.
My journey to CM
My first codeforces round is Codeforces Round 886 (Div. 4), and I solved 5 problems in this round. Perhaps thanks to the experience of high school math competition (my high school math competition career was not outstanding, and finally only the provincial second prize), getting Pupil and Specialist was easy to me. I have summarized my growing up experience into the following list:
- 2023/7/21 My first codeforces round Codeforces Round 886 (Div. 4)
- 2023/8/7 Pupil
- 2023/9/10 Sepcialist
- 2023/10/28 Expert
- 2023/10/30 Back to Specialist
- 2023/12/30 Expert again
- 2025/2/11 Candidate Master (roll back)
- 2025/2/16 Back to Expert
- 2025/4/5 Candidate Master again
In fact, I was very eager to make the breakthrough from blue to purple. Since 2024/12/20 broke through 1800 points and came to 1854 points, every round I played was a challenge to purple. And now, I managed to do it. 
My experiences
How to become Pupil/Specialist/Expert/Candidate Master?
Some guys have talked with me about this problem. Based on my experience, I think the only way to improve is to practice. "Practice makes perfect."" It is famous, and only a few coder can improve without enough practice.
However, practice is only a necessary condition, not a sufficient condition. I always find that someone solved thousands of problems but feel hard to improve. Scientific training is the key to advancement. In my opinion, the scientific training method is: try to do a problem with a rating of 200-400 points higher than your current rating. If you fail to solve the problem in 60 minutes, read the solution and think through the solution. This time is flexible, the reason why I choose 60 minutes is that for me, the problem that has not been solved in 40 minutes in the competition is invalid, so I will add some time on the basis of 40 minutes. Too simple questions are easy to do, but have no effect on improving ability. Too difficult questions higher than we can strive to achieve the height of thinking, will only increase anxiety in the process of learning. I think 200-400 is suitable.
What algorithm should I master to reach Pupil/Specialist/Expert/Candidate Master?
I think some "algorithms", like prefix, binary search, dfs/bfs, dp (basic Knapsack and basic dp on tree), greedy, are mindset in fact. They are actually the most frequently used because they are the most basic. Besides, I know very few algorithms.
I can no longer agree with this blog. I can't seem to do elimination, so I list what I can master:
- Enumerate
- Simulate
- Divide and conquer
- greedy
- Sort (only
std::sort in $$$O(n\log n)$$$) - Prefix
- Binary
- Two-pointer
- Binary-lifting (Only ST-table)
- DFS and BFS
- dp (knapsack dp, interval dp, dp on tree, state dp, count dp, probability dp)
- Trie and KMP (I don't understand it. I can use it only)
- Manacher (I've only done template problems)
- Qucik power
- Modular multiplicative inverse
- Linear-sieve
- Basic-combination
- STL (
std::vector, std::map, std::queue, std::set, std::priority_queue, std::stack) - Monotonous-stack and monotonous-queue
- A little decompose
- Fenwick tree and segment tree (I can use it only)
- DSU
- LCA
- Minimum Spanning Tree
- Shortest-path (Only Dijkstra in $$$O(m \log m)$$$)
I think it is enough to reach Candidate Master. Although most of them are the content is the content of the popularization group in CNOI (just like CSP-J).
What is the relationship between Codeforces and ICPC?
Codeforces is Codeforces, ICPC is ICPC.
I know many people will ask, what can three Pupil/Specialist/Expert/Candidate Master achieve in the ICPC East Asia Regional Competition? Stop to image about it. This is because problems are totally different in Codeforces and ICPC.
In general, Codeforces problems are more "lightweight," whereas ICPC requires a longer chain of thought. If you are doing ICPC for the first time, you may not feel comfortable. This is because in ICPC, a certain amount of team cooperation is required. After all, ICPC is a game for three people.
If you want to do well in ICPC, try Gym and search "ICPC", choose "Virtual Participation".
Recommended sessionContests which have appeared in Universal Cup are always worth experiencing.
Conclusion
This is all I can think of that I need to share and express. Enjoy programming as much as possible. Code is fascinating.
Another reason I want to stop to share