haochenkang's blog

By haochenkang, history, 2 years ago, In English

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!

  • Vote: I like it
  • +15
  • Vote: I do not like it

| Write comment?
»
2 years ago, # |
  Vote: I like it +15 Vote: I do not like it

It depends on the difficulty and quality of the problems, not the quantity

»
2 years ago, # |
Rev. 2   Vote: I like it +14 Vote: I do not like it
  1. just practice as many as possible problems .
  2. solve problems in increasing order of level for example if you solve level 1400 fast and by yourself then go to level 1500 and so on .
  3. take about 1-2 hours to think about problem if you can't solve it then go to editorial and if you find new algorithm or math functions then study them well from any site like geeks for geeks and then solve problem and so.

finally I reach expert by following above training.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it
  • How do you solve problems? Do you start with coding right away? Or are you using pen and paper for taking notes and collecting ideas and start only when you think you've all components for a solution?
  • What do you think is your main problem? Coming up with a solution at all? Wrong answers? Time limits? Something else?
  • If you have not solved a problem (correctly), do you go straight to the editorial or do you take breaks an try to upsolve the problem a few more times before you resort to reading the editorial?
  • When you read the editorial, do you just think "Oh I get it now!", or are you trying to implement it?
  • Do you compare your (correct) solutions to the editorial and to solutions from others?
  • Did you do (at least some part of) the USACO Training Program?
»
2 years ago, # |
Rev. 9   Vote: I like it +9 Vote: I do not like it

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.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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.

»
2 years ago, # |
  Vote: I like it +64 Vote: I do not like it

There could be a million reasons why someone has less problems solved.

  • They started CP before Codeforces.
  • They train on other platforms aside from Codeforces.
  • They had a strong math background before starting CP.
  • They're alt accounts.
  • They're simply talented.
»
2 years ago, # |
  Vote: I like it +1 Vote: I do not like it

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.

Reason 1 is because you're probably perceiving it wrong: even if they have spent less time implementing problems, maybe they have spent more time thinking about problems in their heads. Even if they have just started CP, maybe they have stronger contest math background than you and have put in lots of effort in training their problem-solving skills before entering cp. 

Reason 2: Complaining and worrying about others results is not productive. The only thing you can do to get better is to put in time on your own. I've learned this lesson myself multiple times, the hard way; I am and have always been one of the weakest among my friends at cp. Consider the gap between you and the people you want to impress. Its size should motivate you, rather than discourage you. It's hard to wrap your mind around that at first, but once you conquer that initial mental block, you will get better a lot faster and you will start to have more fun with cp.

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.

»
2 years ago, # |
  Vote: I like it +9 Vote: I do not like it

keep moving,let's be better tomorrow!

»
2 years ago, # |
  Vote: I like it +8 Vote: I do not like it

I think you should look at my profile.

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
2 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I have solved good amount of question from 1300-1500 rating. but still gray. what can i do?

  • »
    »
    2 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    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.