Recently, I've successfully promoted to become a candidate master on Codeforces, which is one of my target this year. And to celebrate this, here is my first blog on Codeforces.
Climbing ranks on Codeforces takes time (unless if you known the platform and the contests well in the first place). During that time, by pushing yourself to climb to your target ratings, you might find out that you learned a lot. E.g.: more efficient coding skills and strategies, more cohesive thinking and more creative algorithms or uses of data structures,.... That's why I always tell myself that decreasing of ratings is okay, as long as you learned something after *that* contest. That's the first tips on climbing: To have a positive mindset.
I heard some avoids rating decrease by violating contest rules (for example: submitting others' codes) and get a "skip" after the system calculating rating changes. I think this is not showing the sportsmanship and fairness when participating in a contest. And by doing this, you might learn nothing after the contest and participating can be a total waste of time. In the near future, I hope that Codeforces headquaters could be stricter towards plagiarism and punish those who try to violate contest rules as well.
Put them aside, here are the other tips:
1, Before the contest
Prepare: water for hydrating, pen and A LOT OF paper for drafting. Also don't forget to go to the toilet 15 or 30 mins prior to the contest. 5 to 10 mins AFK during the contest could decide your whole contest outcomes.
Utilize your contesting condition by altering the room temperature: according to my Math teacher, 19-24 degree Celsius is the most ideal to focus on your work.
Clean up your surroundings: you might not want to work in a messy room, it can be very uncomfortable during the 2-hour (or more) focusing.
Make sure nothing could distract you during the contest: turn off your phone, log out of Facebook. During the contest the only thing should be on your PC is Codeforces tabs and the IDE.
Be as relaxed as possible: take a shower, wash your face, play a game of League, have a cup of milk, ... anything to free your mind before the contest.
2, During the contest:
Keep focus on nothing but the tasks.
REMEMBER: quality must be prioritized more than quantity. You might be slower than your fellow programmer on some task, but in the end, you may stand higher than him or her because your code is accepted and his/her code is hacked/failed system testing. Test your code carefully with pure Brute-force code that 100% yields correct answer (and 100% will exceed the time limit)
Some contest which has task D easier than task C (e.g.: Codeforces Round #492 (Div. 2) [Thanks, uDebug!]). You can identify what to do next by either skim through several tasks at the same time or check the standings and submission counts (This is not recommended to do too often during the contest!).
Use draft paper on some maths-or-geometry-involved tasks. You might want to put down different formulae or algorithms on your paper and keep track of it during your flow of thoughts.
MY STRATEGY (for reference only): Rush through A and B in the first 15~20 minutes (beware of "traps" in the task statements and pretests). Read C and D (sometimes E) to identify what to do next and after that. Check the standings seldomly, and dedicate the last 30 minutes focusing on one task only, not jumping between 2 or more at the same time.
3, After the contest:
Contact your Code-mates and discuss on the tasks: This could help you better understanding the tasks and your own code. Listen to a different approach can be very interesting as well.
Check the editorial: try to follow it. If some tasks are too hard, you can skip them, but it is recommended that you try your best to understand it.
On the long run, I find code-mates make me become more competitive and always push myself harder contests after contests. I learned a lot from them, better understand different approaches to the tasks and makes the contests more enjoyable. I think the criteria to find a code-mate varies for each person, but one point is that one have to be passionate and easy to talk to, in order to help you become better.
Last few words, huge thanks to my three code-mates: Submariner (just 4 days before me), thanglong (on the same contest with me), and Necrozma (really, really close). All three, though 1 year younger than me ( As the publishing of this blog, I'm 17 ), have been incredible in the past few months. We exchanged a lot, and I learned a lot from discussions with them. Nec was very unlucky in the last contest and missed his chance of promoting, but with his passion and intelligence, the day he became the third "purple" coder in our school Informatics team isn't far away.
That's all, now I'll go back to study and take out trash in the next year Hanoi VOI team :p