Everything planned for these notes. Stubs marked 🚧 exist as pages already and are filled in one at a time. The repo-side version (with the phase history) is CLAUDE.md.
IOI Roadmap
Stage by stage, what an IOI contestant needs, whether these notes already cover it, and what to practise. IOI problems are usually partial-scoring (subtasks), sometimes interactive or output-only, and reward a correct or almost as much as the cleverest — read every subtask before coding the hardest one. For the generic (non-IOI-specific) training plan see 🐬 Resources → Training Route; for IOI-specific sites and books see 🐬 IOI Resources below.
Stage 1 — Bronze / national-olympiad level
| Topic | Our note | Practise |
|---|---|---|
| complexity, I/O, debugging | General | Before Contest constraints table |
| brute force, complete search | Backtracking | oj.uz bronze problems |
| sorting, binary search | 2. Searching and Sorting | CSES “Sorting and Searching” |
| prefix sums, two pointers, greedy | 3. Array Techniques, 4. Greedy | CSES, oj.uz bronze |
| basic graphs: BFS/DFS, DSU | 10. Graphs (first notes), DSU | CSES “Graph Algorithms” (easy half) |
| basic DP | 9. DP (first notes) | CSES “Dynamic Programming” |
Gate: solve oj.uz bronze-tier problems from several different years without hints, and explain the model out loud.
Stage 2 — Silver
| Topic | Our note | Practise |
|---|---|---|
| shortest paths, MST | Shortest Paths, MST | oj.uz silver |
| sparse table / RMQ, Fenwick, segment tree | 8. Range Queries | CSES range-query set |
| trees: LCA, Euler tour, diameter | 12. Trees | oj.uz silver tree problems |
| interval/knapsack/tree DP | 9. DP | USACO Guide silver DP |
| binary search on the answer | Binary Search | mixed sets |
| subtask discipline: always bank the subtask first | Before Contest | time yourself: brute force in the first 10 minutes |
Gate: full subtask score (not just the hardest subtask) on a timed silver-tier set; a wrong full solution scores worse than a correct partial one.
Stage 3 — Gold
| Topic | Our note | Practise |
|---|---|---|
| segment tree variants: lazy, persistent, beats, merge sort tree | 8. Range Queries | oj.uz gold |
| HLD, centroid decomposition, small-to-large | 12. Trees | CSES “Tree Algorithms” (hard half) |
| flows, bipartite matching | 11. Flows and Matching | oj.uz gold flow problems |
| DP optimisations: CHT, D&C opt, bitset DP | CHT, 5. D&C, Bitset DP | USACO Guide gold/platinum DP |
| interactive problems: adaptive judges, query-limited problems | Interactive Problems | oj.uz interactive-tagged |
| output-only / grading by score: when there’s no single “correct” answer | Interactive Problems (covers the output-only pattern too) | past IOI output-only tasks on oj.uz |
| offline techniques: CDQ, parallel binary search, Mo’s | 5. D&C, Mo | mixed gold sets |
Gate: full-score an oj.uz gold problem under time pressure, including the interactive/output-only variants, which need a different submission workflow than normal stdin/stdout.
Stage 4 — IOI gold medal / 3000+ level
| Topic | Our note | Practise |
|---|---|---|
| suffix automaton/array, string structures | 18. Strings | Library Checker string set |
| advanced geometry: half-plane intersection, convex hull tricks | 19. Geometry | past IOI finals geometry tasks |
| FFT/NTT, polynomial tricks | 17. Polynomials | Library Checker FPS set |
| advanced flows: min-cut modeling, MCMF | 11. Flows and Matching | past WF/IOI flow-modeling tasks |
| game theory, Grundy values | 20. Game Theory | oj.uz game-theory tasks |
| constructive / ad hoc at IOI difficulty | 1. Problem Solving (ad hoc + constructive sections) | recent IOI day-1/day-2 problem 1s — deceptively hard |
| full-length practice | — | run a real 5-hour, 3-task IOI day under contest rules (oj.uz has day splits) |
Gate: medal-range score (roughly top-50 percentile historically) on a recent full IOI day, timed, with no editorial.
What’s outside these notes (IOI)
IOI very rarely needs anything past what’s in chapters 1–20 plus strings/geometry/polynomials — it almost never needs the ICPC-only “monster” topics (link-cut trees, FKT, matroid intersection; see 🐬 Resources → Advanced Roadmap). The actual differentiator at the top end is speed and subtask discipline, not topic breadth: read Contest Strategy and the subtask-banking habit above.
ICPC Roadmap
Stage by stage, what an ICPC team needs, whether these notes cover it, and where to practise. ICPC is team, full-score-only per problem (no subtasks), and penalty-timed — the skills that matter beyond raw algorithm knowledge are triage, division of labour, and not wasting submissions. For sites and books see 🐬 ICPC Resources below; for the day-to-day team mechanics see Contest Strategy → ICPC team strategy in depth.
Stage 1 — Local/regional qualifier level
| Topic | Our note | Practise |
|---|---|---|
| complexity, fast I/O, templates | General | Before Contest |
| full chapters 1–8 (problem solving through range queries) | 1–8 | CSES problem set end-to-end |
| graphs: BFS/DFS/shortest paths/DSU/MST | 10. Graphs | Codeforces Div 2 A–D |
| basic DP | 9. DP | CSES “Dynamic Programming” |
| team logistics: who reads what, the paper board | Contest Strategy | run a practice team contest on Codeforces Gym |
Gate: a team of three can clear 80%+ of a Division-2-difficulty regional-style set inside 5 hours with low penalty.
Stage 2 — Regional contender
| Topic | Our note | Practise |
|---|---|---|
| trees: LCA, HLD, centroid decomposition, small-to-large | 12. Trees | Codeforces Gym: past regionals (NWERC/NEERC/SWERC easy problems) |
| flows and bipartite matching | 11. Flows and Matching | oj.uz / Gym flow-modeling problems |
| strings: hashing, Z/KMP, suffix structures (intro) | 18. Strings | CSES “String Algorithms” |
| number theory, combinatorics core | 14. Number Theory, 15. Combinatorics | Project Euler style + CF number-theory tags |
| 2-SAT, SCC | 2-SAT | Gym regionals |
| geometry basics: primitives through convex hull | Geometry (01–05) | Gym geometry-tagged sets |
| team triage drill: read-all-first, assign-by-estimate | Contest Strategy | timed 5-hour Gym regional, as a team |
Gate: solve a full recent regional (NWERC/SWERC/NEERC/CERC/GCPC/NCPC — all archived in the Codeforces Gym, several also on Kattis) above the medal cutoff, as a team, under real timing.
Stage 3 — World Finals qualifier
| Topic | Our note | Practise |
|---|---|---|
| advanced flows: min-cost flow, project selection, Gomory–Hu | 11. Flows and Matching | past WF flow problems |
| advanced trees: link-cut, Kruskal reconstruction, virtual trees | 12. Trees | Gym WF sets |
| FFT/NTT and polynomial tricks | 17. Polynomials | Library Checker |
| full geometry: half-plane intersection, rotating calipers, Delaunay | 19. Geometry | Gym WF geometry problems |
| game theory: Sprague–Grundy and variants | Sprague–Grundy | Gym game-theory-tagged |
| linear algebra / matrix tricks, linear recurrences | 16. Linear Algebra | Gym / Library Checker |
| randomized and numerical methods (hashing under attack, Simplex) | 22. Randomized, 23. Numerical | Gym WF sets |
| full-length practice | — | run entire archived WF sets (5 hours, team) end to end |
Gate: place well enough at a regional to qualify (rules vary by region — check your actual regional’s cutoff), with the team consistently finishing in the top bracket of practice WF sets.
Stage 4 — World Finals medal level
| Topic | Our note | Practise |
|---|---|---|
| complexity theory / NP-hardness recognition (so the team doesn’t waste an hour on an NP-hard problem) | Complexity Theory and NP-Hardness | Gym WF sets with a known-hard trap problem |
| the “monster” topics that show up a handful of times at this level (link-cut trees, FKT, matroid intersection, SPQR trees, …) | see 🐬 Resources → Advanced Roadmap for the full list, and the specific chapter each lives in | Petrozavodsk camp sets, Universal Cup |
| puzzle/ad-hoc pattern recognition under time pressure | 25. Puzzles, 1. Problem Solving | recent WF problem 1s / “trick” problems |
| team speed: pre-written tested library pasted, not re-derived | 🐬 Templates | time how fast each member can paste+adapt DSU/segtree/flow from memory |
| highest-density practice | — | 🐬 ICPC Resources below → Petrozavodsk Winter/Summer Camp, Universal Cup — the training camps the top teams actually use |
Gate: medal range at World Finals (top ~12), or consistently solving 9+/12 on fresh Petrozavodsk-camp-level sets as a team.
What’s outside these notes (ICPC)
Essentially nothing core is outside these notes at World-Finals level — the “God tier” list in 🐬 Resources is deliberately kept as a reference list (not full chapters) because it appears only a handful of times even at WF. The real gap at the top is team speed and triage, which is practice, not reading — see Contest Strategy.
Rewrite queue
Empty. The merged-old backlog (20 19-geometry/ notes + 7 21-complete-search/ notes) was finished and committed; every note in the repo is now a from-scratch rewrite, not concatenated old pages.
Proof backlog
Empty. All 51 notes (written before the proof rule) now have [!proof]- callouts for every claim.
Later passes
- Fold every remaining “Further notes” section into the main text (120 notes,
grep -rl "^## Further notes" content/ | wc -lto recount) - Mine every book in Resources for gaps in the notes