How can I improve my problem solving skills especially in those which involve Graphs, Dynamic Programming and Segment Trees?

I need some suggestions on how to approach these problems. I know the concepts related to them but I am unable to apply my concepts to the problems that I encounter. For example how can I recognize whether a problem can be solved using DP or not, I’m able to recognize problems on Segment trees but I am unable to solve them and same is the case with problems involving graphs.
Can anyone give me a list of problems in these topics starting from the very basic level so that I can improve one step at a time?

That’s kinda simple: you practice them, you practice them more, you keep practicing them - and you improve over time.

Learn the concepts, practice solving these problems, upsolve contests, read editorials and codes by other contestants, try to challenge yourself with problems which are hard enough for you - but not too hard; that’s all, no secrets here.

Checking your profile - you are just a beginner who started short time ago and didn’t practice much yet. It’s OK to have hard times with all that stuff at the beginning, so don’t get upset, be patient and keep practicing.


Thanks @lebron. If possible please provide me with some basic level problems in these topics.

This might be helpful .