I am assuming you are not a beginner anymore , if you are a beginner, then follow this : https://www.desiqna.in/218/roadmap-started-competitive-programming-beginners-resources
For,people who are not beginners(want to become experts,CM,Masters,5*,6*) :
Whenever you want to study a particular topic in competitive-programming , go straight to this russian website :
https://cp-algorithms.com/
This website has each topic explained in required depth with ample amount of practice problems on each topic .
To visualize various tree,graphs and algorithms : https://gravy.thud.dev/
This is also a good resource to refer while studying different topics : https://www.hackerearth.com/practice/notes/trending/
You can find list of all contests at one place here : https://contestmania.web.app/codeforces?category=Div2
See, to need to study many different topics like : DP , GRAPHS , TREES , STRING-ALGORITHMS , MATH(LCM,GCD,PRIME,EULER-TOTIENT,FACTORS,FFT,MATRIX-EXPONENTIATION,ARITHMETIC-MODULO),DATA-STRUCTURES(SEGMENT TREES,SETS,MAPS,DIFFERENT TYPES OF TREES,PRIORITY QUEUES),COMBINATORICS.
You have to study all these topics and solve some problems on each topic , find questions related to each topic mentioned above on Codechef,codeforces,AtCoder and practice honestly.
All resources for competitive programming can be found here :
https://halexv.blogspot.com/2015/10/competitive-programming-resources.html
(Always try searching blogs of codeforces on google related to the topic you wan to learn)
One more : https://www.commonlounge.com/discussion/55e14de95aed4baa84f61bcb4c14ca3c
Course to reach 2000 rating : https://codeforces.com/blog/entry/53341
Course to reach 2400 rating : https://codeforces.com/blog/entry/66909
Apart from all these, most important is to improve your "thinking" skills, most of the times you will find problems on codeforces which dont require knowledge of any specific topic,data-structures,algorithms . All it requires is your skill of thinking . If you can think properly, the problem is solved !! To improve this part, solve as many constructive-algorithms based problems on codeforces .
If you want to solve problems based on a topic, just put that in the bar here and you will find a full list of problems on : https://codeforces.com/problemset?tags=combinatorics
Make sure , during the whole process, you enjoy solving the problems and take full pleasure out of it. Never resort to any kind of shortcuts , never check ranks of your friends, never compare yourself .
The most important thing is to have a healthy mindset while doing CP , that can only be achieved with proper wisdom . You have to reach a state, where losing rating does not matter, where you never get jealous of others performance , all you have to do is reach the best version of yourself, you are unique, be grateful for it!
With lots of good wishes , I sign off :-)