NeFut Logo NeFut
Admin Login

[CF Hardcore] Effective Strategies for Competitive Programming

Published at: 2026-06-09 09:00 Last updated: 2026-06-10 06:41
#algorithm #Codeforces #Problem

Many people practice in some organized way. High schools organize IOI/OI training contests every Saturday, universities organize ICPC training contests once a week, and individuals try to solve three problems each day, while websites host rounds and so on. Here’s a secret: it’s ineffective. Yes, it’s true. If you want to be really good, participating in a weekly training is just an excuse to say, "but I’m training hard" when you see no progress. Every really good person has dedicated a significant part of their life to CP, and I don’t mean giving up Saturday parties or losing friends; I mean dedicating a part of their mind to it. You must truly want to improve and find real pleasure in practicing and watching your progress. This also means catching yourself thinking about various problems or seeing algorithmic interpretations in many aspects of real life.

You should practice every time you have thoughts like, "Oh, I’d solve some problem," "Oh, it’d be good to practice a bit now," or "Oh, it’d be cool to solve every problem on this website, let’s start." Here’s a trick: if you really want to be good, you’ll have a lot of such ideas. If you don’t have them and just want to practice weekly, then you better reconsider if you truly want to get better. Do you think you are bad at combinatorics? Good, you see your weaknesses, go solve some such problems. Want to simply solve a few problems? Great, go solve them as long as they are challenging for you. Or you want to solve every problem from some problemset (still can be a challenge for you). Or you want to upsolve a whole round (still can be a challenge for you). Or you want to have more problems solved on Codeforces than your friend (still can be a challenge for you). Or just for any other reason, but still, don’t solve the easiest problems on Codeforces and expect to become good.

Want to participate in a virtual round? Sure, go do this. Don’t do this if you are sure you’d solve them. Do this if you want to check if you’d win that round/be better than your friend/something. Challenges, remember? But don’t get me wrong, for example, if you are already quite strong and you want to read (or even participate) the problems from div3, which is definitely below your level — it’s okay if it’s a sign that you are curious about problems and it’s interesting for you.

Do you really want to get better and compete virtually in two 5-hour contests in a row? Great, go practice. Want to go and participate in a training organized by your university? Of course, great idea — rivalry, some stress, fun with other people. If you are really practicing and trying to get better, the weekly trainings with your schoolmates/university/teammates will become a nice event for you, but don’t depend on them. Also, practicing with your ACM team is a way to create a better team — you have to know your weaknesses and strengths and learn how to cooperate. To make your team better at solving problems when you already know how to cooperate, you have to make yourself better at solving problems.

Do you want to skip a training organized by the university and meet your friends/read a book/play some games? Sure, if you don’t feel like practicing, then don’t force yourself. If you really want to practice and become strong, you’ll for sure compete in this contest virtually or something, don’t force yourself, just really feel a need to practice. You can’t rush art, right? One more time: you really have to have CP in your mind. After solving a problem, it doesn’t mean that it’s gone and you have to forget about it. Maybe you’ll find yourself thinking about some interesting aspects of some task and you’ll invent a harder one? I don’t know what else to say. Don’t give up? With the right attitude, if you can’t solve a problem that is really interesting/important for you, you’ll try for a few days — the pleasure and self-satisfaction after solving a problem for a few days with success is one of the best feelings. Also, one last tip: I’ve noticed it observing all the top people on Codeforces/Atcoder. None of them uses the word "question" instead of "problem" or "task". So don’t do it. You won’t progress if you keep calling problems "questions". So yeah, that’s my opinion. Let CP get into your mind and find a true desire to practice. Don’t try to force yourself to practice in an organized way. I know that this blog may discourage some people, but they wouldn’t go far with such an attitude. I also think that it can help people with real potential to become somebody really strong and that’s why I wrote it. If any other top-rated coder wants to share his/her way or just point the differences — that’s great.

Original Source: https://codeforces.com/blog/entry/154349

[h] Back to Home