An ordered path through this wiki. Each stage assumes the previous one is comfortable, not merely read.

The rule that matters

A topic is learned when you can re-implement it from an empty file and debug it under time pressure. Reading a page is the start of learning it, never the end.

Stage 0 — Prerequisites

Checkpoint: you can read and immediately think "".

Stage 1 — Foundations

TopicPages
Sorting and searchingBinary Search, Binary Search on Answer, Merge Sort
Two pointers and sliding windowTwo Pointers, Sliding Window
Prefix sumsPrefix Sums, Difference Arrays
Arrays in placeArray and Matrix Techniques
Basic greedyGreedy and Scheduling
Recursion and backtrackingBacktracking

Practice: CSES Introductory Problems and Sorting and Searching. Codeforces Div 3 A–C.

Stage 2 — Core techniques

TopicPages
Graph traversalBFS, DFS, Components, Toposort
Shortest pathsDijkstra, Shortest Paths, Floyd-Warshall
Basic DPDP — knapsack, LIS, edit distance
Number theorySieve, Modular Arithmetic, GCD
Basic structuresDSU, Fenwick, Segment Tree

Practice: CSES Graph Algorithms, Dynamic Programming, Range Queries. Codeforces Div 2 A–C.

Stage 3 — Intermediate

Practice: Codeforces Div 2 C–D, AtCoder ABC E–F.

Stage 4 — Advanced

Practice: Codeforces Div 1 A–C, AtCoder ARC.

Stage 5 — Specialist

Link-Cut Trees · Wavelet Trees · Blossom · MCMF · Berlekamp-Massey · Exact Exponential Algorithms · Randomized and Approximation

Reach for these when a problem demands them, not before.

What to skip until it appears

Fürer’s multiplication, Chazelle’s linear MST, most curiosities, and anything whose constant factor makes it slower than the simple version at contest sizes. Knowing that a bound exists is enough; implementing it is not.

See also: Navigation · Problem Sets · Online Judges · Master Checklist