Hi Codeforces !
In this blog I will discuss about some important algorithms, practice strategy and some tips for newcomers....
Important algorithms and Topics
Here I will mention some important algorithms and some important topics.
• STL
• Sorting
• Binary Search
• Time Complexity
• Prefix Sum
• String
• Basic Number Theory
• Basic Bit Manipulation
Practice Strategy
Most of newcoms try just easy problem for practicing. All newcomers should try hard problems but not so hard. Like if your current rating is 1000-1199 then you should try at least 1300-1400 rated problems . So, try those problems which will take at least 1 hour or higher to solve.
Tips
First of all you have to enjoy competitive programming. When you solve a problem try to prove that solution which is very very important even I think it is one of the most important tips.. If you can't prove try to understand the editorial. Never cram solution always try to understand.
You can watch a video of galen_colin. From Here
I hope you will forgive me for my mistakes.. I am apologize for my bad English ;( .
This "Important algorithm and Topics" list is pointless. Just learn whatever you don't know today, and you'll improve every day. There is no "more important" or "less important" algorithm, they are all equally important and worth learning. The only thing more important is the prerequisites, what must be learned before some other thing is learned. It's not like we "believe of the binary search religion" and ask binary search to someone who don't even understand what they are doing.
Should I delete that part?
Well it's better just having a list of what newcomers need to learn before they advance to other stuff. Language basics, DP, DFS, BFS, stuff like that. No need to assess their importance.
The topics that you have mentioned is these for pupil ??
high rated people say these topics are sufficient for GM (tho I dont agree with this)
That is a huge lie, you can't get GM without dp, segment trees, dfs and other important data structures and algorithms not stated here
I don't think the list is pointless. It may be a bit misplaced, without the correct context.
Stuff that is immediatly important:
• STL. STL is only available in C++. What you meant is a whole list of basic datastructures and their respective time complexities and use cases. (Hashtable, Hashmap, arrays, arrays with dynamic resization (list/vector), stack, queue, priority queue)
• Time Complexity. Big O Notation and the needed time complexity on codeforces depending on input size.
Stuff that is overrated:
• Sorting. If you know how to sort in O(n log n), you are good for a long time. In-depth knowledge about sorting algorithms may become slightly relevant at purple.
• String. String problems are common, but you can't really learn about "strings" without solving problems.
• Basic Number Theory. Yes, of course you need to know math. But instead of studying math, you can solve problems and learn by solving problems.
Stuff that becomes relevant at some point
• Binary Search. Not relevant until you reach around 600 rating. After that point, it becomes increasingly more important to learn. Its a prerequisite to a lot of approaches.
• Prefix Sum. Also relevant early on, around 600 rating.
• Basic Bit Manipulation. Some problems are gatelocked by this. Probably relevant to read up on it at around 800 rating, and then learning bits of it whenever you encounter a problem.
You should just do problems 200-300 rating above you in practice