susenyang's blog

By susenyang, history, 13 months ago, In English

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 rating changes polylines

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 session

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
  • Vote: I like it
  • +64
  • Vote: I do not like it

| Write comment?
»
13 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by susenyang (previous revision, new revision, compare).

»
13 months ago, hide # |
 
Vote: I like it +15 Vote: I do not like it

Congratulations! You can reach Master :)

»
13 months ago, hide # |
 
Vote: I like it +3 Vote: I do not like it

Congratulations! As a friend of susenyang, I have witnessed that even after he concluded his journey in ICPC, he did not give up on competitive programming and eventually reached the rank of Candidate Master.

»
13 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Congratulations!

»
13 months ago, hide # |
 
Vote: I like it +4 Vote: I do not like it

Congrats, based on your graph I can tell you're the grinder type! Huge respect.

I'm on my grinding mode too, I only hope the end of the road is the breakthrough just like yours.

Thanks for sharing the journey, appreciated.

»
13 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

how to practice , like sort by no. of people solved or solve the latest problem in that rating range.

  • »
    »
    13 months ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    I think if you are learing new algorithms, you can choose the limited tag (just like binary or prefix). When learing new things, blogs and tutorials are good resources.

    When you reach Specialist(or Expert), I suggest that you hide the tag and try to solve problems in the fixed range and detect which tag they want you to know.

    The style of problems is changing so practice latest. Of course, some classic problems are also valuable.

»
11 months ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

As someone who got to CM around the same time, I will follow you and consider you one of my rivals.