Whenever I learn a new algorithm or data structure, I always spend a lot of time finding problems related to that specific topic from previous contests on Codeforces or some good Competitive Programming Website. Many people told me to use Codeforces tags. Still, I feel that they are too many problems that will blow up your mind, or you might end up solving a similar type of problem-based on a topic(algorithm or data structure) which means you are not learning anything new and is counterproductive.
After a year of extensive search, I have found out 5 good resources which solve this problem. --------------- 1) Competitive Programming 4: This is a book with 2 parts, which has good handpicked problems from UVa OJ, Kattis, previous year ICPCs and IOIs problems. As of today, this book doesn't have a soft copy, but the author says that they will make it available sometime in the second half of 2021. But still, the Hard Copy of this book has reasonable pricing, and the value of this book is way more than its cost. I love this book, but I don't recommend this book to someone new to programming and who don't have a good knowledge of data structure and algorithms; it is one of this book's prerequisites. If you can do the first couple of problems in div 2 on Codeforces and have a decent knowledge of Data Structure and algorithms(not necessarily advanced ones), then go ahead; this book is completely for you. You can get a hard copy from cpbook.net.
2)Problem Sets from progvar.fun: This website contains problems for each topic from Codeforces, Codechef, Atocoder, UVa OJ, Spoj and Hacker Rank. This website has good content for beginners and experienced Competitive Programmers who want to solve problems based on a specific topic. We can sort problems based upon the number of people who solved the problem in the past. What I like most about this website is the number of problems per topic are not too many that we cannot solve all of them and just enough to get a grip on that particular topic. This is the website on which I solve most of the problems. Link to the website.
3) Morass Blog: This is a blog on codeforces with problems from UVa OJ, Spoj and Codeforces. What I feel about this resource is that problems here are difficult for people who just started solving problems on that topic. Problems are randomly arranged and not sorted in increasing order of difficulty. But if you have done some problems on a topic and need some difficult ones, this is the perfect place for you to find one. Link to blog.
4)A2Oj Categories: A2OJ is a famous website which is known for its ladders. Many people don't know that it also has topic wise problem sets from various famous OJs. The problem with this resource is that it has too many problems in some categories and very less in some others. Link to the website.
5)Code Digger Topicwise Ladders: This has problems mostly from Codeforces. The nice feature about this is that it doesn't let you see the next problem until you have solved the current one. I personally don't use this website for this purpose and don't know how reliable this resource is, but some of my friends use this website and told me this is also a good problem set to start from. I use this website mostly for its feature to accumulate unsolved problems from the contests we have attempted from various OJs and categorize those problems in different difficulty levels. Basically, for up solving.Link to the website.
How I use the above resources?
I first learn algorithm or Data Structure, or Technique from Youtube and Competitive programming book then implement it myself. Then I solve 2-3 problems which I randomly pick from the CP4 problems section. After solving problems from CP4, Next, I find the appropriate problem set from progvar.fun and solve all of them. If I feel confident in the topic and if I feel I need more difficult ones, then I move to Morass blog and pick D and above the level of codeforces problems and solve them. I use A2OJ categories whenever I need more problems and have already exhausted problems from the top 3 resources or when I need to revise a topic that I have not done in recent times.
That's it for today, and If there is another good resource for this purpose, please mention it in the comments so that the whole community can benefit. Sorry for the errors. I am bad at English.
>> I first learn algorithm or Data Structure, or Technique from Youtube and Competitive programming book then implement it myself. Then I solve 2-3 problems which I randomly pick from the CP4 problems section. After solving problems from CP4, Next, I find the appropriate problem set from progvar.fun and solve all of them. If I feel confident in the topic and if I feel I need more difficult ones, then I move to Morass blog and pick D and above the level of codeforces problems and solve them. I use A2OJ categories whenever I need more problems and have already exhausted problems from the top 3 resources or when I need to revise a topic that I have not done in recent times.
... and still grey after 1 year and 3 months
Well, I do Competitive Programming to improve my skill, not my rating. No one will give you a single penny if your rating is high. No one actually cares.
I still don't understand why people will run behind the rating.
Also, a rating is not an appropriate measure of your skill.
So if your rating isn't a good measure of your skill, how do you measure it...
Ability to solve problems. Not necessarily during the contest.
Lord have mercy on you.
I'm not saying that you can't solve problems but I must say I have my doubts. Let me explain. Usually hard problems contain a lot of easy problems as subproblems, to the extent that if you are to solve a hard problem, you must be able to solve these little bits intuitively without thinking. So, if you can solve hard problems with any consistency, you should be able to solve Div 2 ABs very fast.
Rating is a measure of skill. Not entirely perfect still it is. Don't give useless advice. First learn to solve div 2B,C during contests.
Agreed but all I am saying is that rating is not the only factor one should consider to get better. If you go solely behind rating your obsession will kill your motivation and you give up.
Thanx for your advice.
If you still don't understand, topic-wise training is useless, because you know topic in advance and don't use your brain to determine it. Then you suck on contests as nobody tells you the topic. It was said thousand times but low rated people still don't get it.
Topic Wise Training is important when you have learnt a new algorithm, and you want to test whether you have understood well and able to use it to solve some problems from real contests and Standard OJs. It is an important part of competitive programming, and solving problems whose topics are unknown is also important. I believe we have to spend a fair amount of time on both practices to get better at this skill.