Hello Codeforces,
Recently, I've been scouting around profiles and looking at the number of questions specialists and experts solved. I realized that most specialists and experts have solved under 300 questions. This is really discouraging and demotivating because I have personally solved over 600 problems but I have just reached specialists.
I would like to know whether experts and specialists are practicing coding using a different platform, or do they have a more effective of training than just solving as many problems as possible. Also, please provide me with effective training techniques that helped you improve in competitive programming.
Much thanks!
Edit: Thank you to everyone who replied and provided me with useful tips. I will definitely use all of your tips!
It depends on the difficulty and quality of the problems, not the quantity
finally I reach expert by following above training.
How was 780 div3 rated for you ?
wtf real. Is this the first expert to write Div.3 legally?
Worrying about the number of problems you solved compared to others is a bad idea I think. It can only hamper your progress (for example if you get afraid of solving more problems).
Also rating is best used as an indication of improvement rather than an end in itself. Still, contests (either live or virtual) are fun and convenient to structure your studies (looking up the tricks/algos of problems you failed to solve helps as you pay more attention to the problems during a contest).
If you just focus on solving interesting problems and learning algorithms (which is valuable in itself regardless of the effect it has on rating) you'll improve gradually. (Solving problems in a range is probably the most efficient method to raise your CF rating from what I've read but I don't do it personally to avoid spoiling virtual contests; in AtCoder you get rewarded more directly by learning algorithms and techniques).
I think there a snowball effect for learning. Knowing like 5% of techniques for a given level is barely going to help because the probability of their being in a given contest is low, but once you know 50% you begin to see them everywhere which is encouraging. I'm starting to experience that especially in AtCoder which is more algos based and less adhoc that CF. But I find CF problems more entertaining so I do them as well.
A good place to learn algorithms is the CSES problem set and pdf e-book. The problems are very close to the algos so you can test your knowledge (of dp, graph and so on) directly. You can complement by looking up topics on a search engine. I don't care about the number of problems I've solved on CF one way or another but on CSES that number directly correlates with my learning progression so I keep an eye on it.
So yeah to conclude my rambling, my advice would be: don't be fearful of having solved too many problems but try to get better in a way you enjoy.
In my experience solving a lot of problems is helpful, but their difficulty is important.
Also you need to solve problems with some algorithms like: dp, segment tree and so on. If you don't know this algorithm then read some blogs about it. I believe Solving problems with different ideas expands the way of thinking, Which in the end helps to solve more problems.
Finally, I solve USACO problems, they've got nice ideas and they have editorials.
There could be a million reasons why someone has less problems solved.
2 pieces of insight for you,
A. many profiles with low amount of problems solved have done lots of practice elsewhere, not on codeforces. For me, my real solved count is more like 800-900, split across leetcode, atcoder, codechef, usaco, and here on codeforces. With that being said, I will say that my most significant improvement came since starting to solve harder problems here on cf. Leetcode is great to get you off the ground, and to learn standard techniques, and codeforces div2 a-c are great for you to develop problem solving intuition.
B. even if you do come across someone who has seemingly put less time into it than you have, with apparently better results, you should completely ignore this.
As for tips on how to practice, I don't know how qualified this advice is but: I recommend learning by topics. You can do this quite effectively on CSES, leetcode and usaco.guide. People seem to dismiss leetcode as just an interview prep site but I think the problems are short and easy enough to give a gentle introduction to many standard concepts and classic questions.
With that said, to reach expert you don't actually need to solve any hard problems; you just need to solve div 2 A-C fast every time. (To be fair, sometimes hard problems come up in A-C). Speed is pretty important, so I'd recommend also setting some time aside to train your implementation speed on easy problems like A's and B's.
keep moving,let's be better tomorrow!
I think you should look at my profile.
Auto comment: topic has been updated by haochenkang (previous revision, new revision, compare).
I have solved good amount of question from 1300-1500 rating. but still gray. what can i do?
If you can solve problems but are too slow or make too many mistakes to get good scores on contests, you could try focusing on Div3 Virtual Contests. That would force you to be more efficient and make less mistakes. And avoid giving up halfway during a contest. You could also summarize what you know from the problems you have solved already to have more useful tricks ready at hand. It's ok to look at editorials of problems you couldn't solve during a VC (and then integrate the technique to your arsenal) but try to solve them for a while before looking.
Also it seems that there's going to be Div4's from now on (one is already scheduled) so you can build your confidence doing those.