Hello Codeforces!
I am excited to share with you my competitive programming innovation which successfully propelled me to master (2100+)! This is the ThemeCP training method, which stands for Themed Codeforces Progressions. Use at your discretion -- your Codeforces practice may get too effective and addictive!
Want to read this blog in document form (with images)? Check out the following Google Doc! https://tinyurl.com/themecp
What is ThemeCP?
ThemeCP is an experimental training system wherein users train on a perpetual ladder for ratings in [900, 3500]. The system is based on two-hour, four problem mashups with a common “theme,” ideally done every day. Read this post – you could be doing your first ThemeCP round just 15 minutes from now!
Steps
Manual Method
- Determine your initial level using the attached level sheet (here). For example, a 2300 rated coder starts at level 49.
- Create your ThemeCP at your level! Select a random topic among the topics listed here and four problems in that topic. The method you use isn’t very important. As for me, I use AC’s TLE bot (server invite link here) to select a random problem of the highest rating, select a random topic (among the random problem's tags, then considering only the listed topics), then select three more problems with that tag. For example, a level 49 mock would be 1700/1900/2100/2300.
- Begin your ThemeCP! The ThemeCP template can be found here. Solve the problems in order of difficulty!
- If you get an AK (4 of 4 solves), increment your level by 1. Otherwise, decrement your level by 1. Remember to upsolve the easiest problem you didn’t get during the mock! This is very important.
- Repeat from Step 2. Take a short break, and cherish the fact that you trained productively. You can also use the ThemeCP tracker here!
See the following YouTube video for a Level 45 (rating 2200) demonstration of ThemeCPs: https://www.youtube.com/watch?v=-OFNTD315-w
Automated Method
You can use Tenz1n's website which does all of the steps for you! Backward compatibility, i.e. uploading ThemeCP data from a Google Sheet made through the manual method, is currently under construction and is expected to be released by December 10, 2024.
Why does it work?
ThemeCP lets you train with problems in the entire difficulty range [rating-700, rating+100] you have a decent shot at solving. This balances difficulty and skill and keeps you in the "flow state", simulating your experience in an actual contest!
Even though you are training with problems slightly below your expected rating, not all problems of the same rating are equally challenging for you. In fact, your built-in strengths and weaknesses carry a +- 200 differential on any given problem! Therefore, this system exposes you to problems in the entire range you could plausibly solve in a contest.
Furthermore, ThemeCP’s high success rate, self-balancing at around 50%, keeps your motivation high. Failures increase your success rate (literally), and successes prove your improvement!
Efficacy
ThemeCP has been tested by over 100 Codeforces users, collectively completing over 600 ThemeCP rounds! ThemeCP has been used as the Philippine NOI's selection process for the country's year-round informatics training program. Based on the extensive data, we estimate that each ThemeCP round increases one's true Codeforces rating by approximately +5 for ratings below 1400 and +2 for ratings above 1900.
In addition, multiple IOI medalists have practiced extensively (10+ rounds) with ThemeCP with overwhelmingly positive response, citing it as a great way to get themselves to practice throughout busier school times.
Anecdotally, ThemeCP gave me a consistent training routine, and I believe that training is solely what caused my improvement. ThemeCP was simply the catalyst to training in greater amounts.
Inspiration
Around a year ago, I was reading self-improvement books to optimize my training/study habits and improve my lifestyle. One such book, called Atomic Habits, stuck with me. The ThemeCP mechanism draws inspiration from this New York Times bestseller. I incorporated three of four major ideals for a habit to be self-propagating: make it (1) attractive, (2) easy to continue, and (3) satisfying. The fourth ideal, making it clear to do, is up to you. Make ThemeCP your habit today!
Credit
The concept of ThemeCP was formulated in early 2022 and has since gone through multiple significant changes. The current version of ThemeCP was realized in early 2024.
I sincerely thank the following members of the Codeforces community for their contributions to the development of ThemeCP:
- Marinush for his troll blog that inspired the leveling up/down system of ThemeCP,
- Tenz1n for his amazing implementation of the ThemeCP mechanism,
- ACGN, Avuvos, drdilyor, MetalPower, Rideris, tolbi, and vinhhocptit for their feedback on ThemeCPs,
- galen_colin and Geothermal for their esteemed veteran advice,
- DippleThree, Shisuko, verngutz, and wfe2017 for administering ThemeCP as part of the Philippine NOI's training program, and
- the countless NOI.PH highschoolers who did so many ThemeCPs!!! I can't tag all of you, but you contributed a LOT to the development of ThemeCPs!
(Bonus!) Website Implementation
My good friend Tenz1n has created a website implementation of the ThemeCP training method! It is a full implementation of the ThemeCP mechanism.
Go check it out at https://themecp.vercel.app/ !
Feedback
Do you have any feedback for us? We would love constructive feedback on ways to improve the ThemeCP training method! Please comment what you like or dislike about ThemeCP, and if you have any suggestions, please comment them below!
As one of pwned's trainers from his IOI days, the jump in skill from before and after he came up with and started doing ThemeCPs was insane!
Since I am still working on adding the option to upload old ThemeCP contest data, please join the ThemeCP discord server and send me (handle: 10zin7457) a public link to your ThemeCP google sheet!
If you're not sure how to practice, I highly recommend this method! It helps you focus on specific topics with increasing difficulty, offering plenty of easy problems to enjoy and tougher ones to challenge you.
It also feels like a real contest with its own rating system, so you can track your progress and see improvements quickly. It's a great way to improve while having fun!