hello I recently came upon this list of categories made by Errichto and I think it's great but I don't know in which order one should start or what are some topics that are must know and others that I can learn later?
categories
Implementation; vectors and sets *
Binary search *
Prime sieve; prime check in O(sqrt(N))
Dynamic Programming — Fibonacci numbers, prefix sums *
Sorting *
Greedy *
Ad-hoc
Graphs — graph representation, BFS, DFS, trees *
Geometry — distance between two points
Bitmasks
Two pointers, sliding window
Data structures — sqrt decomposition, segment trees, Fenwick/BIT, persistent structures, Policy-Based-DS, treaps, BST
Ternary search
Interactive problems
LIS
LCS
Maths
Number theory
Combinatorics, probability, EV
Find & Union
Game theory — NIM, Grundy
Hashing
Strings — KMP, Z
Geometry — cross product, convex hull
Matrix exponentiation
Divide & Conquer
DP optimizations
Graphs * — Dijkstra, FW, SCC, bridges, matching, flows
Randomized algorithms
TRIE
Trees — bottom-up dp, LCA, Centroid decomposition, HLD, DSU
2-SAT
Strings — suffix arrays
Constructive algorithms
Expression parsing
Meet in the middle
FFT
Chinese remainder theorem
Gaussian elimination
Difference array, binary lifting
note: I am not a total beginner I have some knowledge (the starred ones)
thank you for reading
and thank you Errichto for such a useful list :)









You're welcome but tbh I don't think that the list is useful. I always recommend just solve problems. You will encounter all the topics anyway — just read editorials and follow up on new topics you didn't know before. https://github.com/Errichto/youtube/wiki/How-to-practice%3F
yeah I know and that's what I have been doing before but this year I am on my country's national team (ranked 3rd) preparing for IOI so I figured some knowledge is needed ofc especially to solve OI problems
Then read IOI syllabus