I've been doing competitive programming for about 2-3 months and have gone through these topics so far:
- Basics (Conditional statements, loops, switch)
- Bitwise operators
- Arrays, Strings
- Greedy algorithms
- Linear search, Two pointers
- Binary search
- Prefix sum
- Sorting
- Number Theory (sieve, modulo, exponentiation)
- Pointers
- STL
- Recursion
- Basic Probability and Combinatorics
Lately, I've been practicing questions in the 1000-1400 range.
Next, I'm thinking of diving into:
Stack
Queue
Tree
Heap
Hashmap
Trie
Backtracking
Graph (BFS, DFS, Shortest Path)
Dynamic Programming
Does this sequence seem okay? Any tips on how to approach these topics?
I have done same topics which u have done with stack and queue extra and believe me just practice this much you can reach 1400+ by this much topics only once u reach 1400 then study dp and graphs before that there will be no use as u will not be able to solve those problems anyway in the contest
What range of problems should I focus on? I find it hard to solve constructive algorithms. Any suggestions for that?
for constructive algo and greedy only practice is the key I also struggle with them alot. You have solved alot of 800's stop solving them you will not improve by doing them focus on currently doing 1200's and 1300's when u get comfortable in this range then increase the rating range to 1300-1400
I think graph before tree? tree is just a special graph, so understanding graphs first is better in my opinion, the rest seems fine
Thanks! I don’t have much idea about these topics (except Stack and Queue), so Tree should be between Graph and DP, right?
I believe basics graphs are much more useful than Tree. (Like bfs, dfs are must have imho)
Also for me personally topic of DP was easier than Tree (and also it's occurs more often in contests afaik)
I believe that the situation does not depend on the topics you know more than the extent of your knowledge and practice on these topics.
After you have been comfortable you can learn techniques like DP, also you can start to study Graph theory (you can study the basics right now)
You seemed clueless on your topics, as they are separated too randomly.
Learn exhaustive search, and with it backtracking as well. This is basic stuff you'd always need, not to solve any problem, but to complete your basic methodologies.
Stack+Queue for basic FIFO/LIFO data structures, which would enable you to work with graph and DP topics. And for graph, tree is a welcome optional addition, though I bet you'd learn trees on your own when practicing graph problems anyway.
The rest, don't. Not yet your time to do so. Maybe heap is okay, but the rest should be left behind when you're more established.