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

TopicOur notePractise
complexity, I/O, debuggingGeneralBefore Contest constraints table
brute force, complete searchBacktrackingoj.uz bronze problems
sorting, binary search2. Searching and SortingCSES “Sorting and Searching”
prefix sums, two pointers, greedy3. Array Techniques, 4. GreedyCSES, oj.uz bronze
basic graphs: BFS/DFS, DSU10. Graphs (first notes), DSUCSES “Graph Algorithms” (easy half)
basic DP9. 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

TopicOur notePractise
shortest paths, MSTShortest Paths, MSToj.uz silver
sparse table / RMQ, Fenwick, segment tree8. Range QueriesCSES range-query set
trees: LCA, Euler tour, diameter12. Treesoj.uz silver tree problems
interval/knapsack/tree DP9. DPUSACO Guide silver DP
binary search on the answerBinary Searchmixed sets
subtask discipline: always bank the subtask firstBefore Contesttime 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

TopicOur notePractise
segment tree variants: lazy, persistent, beats, merge sort tree8. Range Queriesoj.uz gold
HLD, centroid decomposition, small-to-large12. TreesCSES “Tree Algorithms” (hard half)
flows, bipartite matching11. Flows and Matchingoj.uz gold flow problems
DP optimisations: CHT, D&C opt, bitset DPCHT, 5. D&C, Bitset DPUSACO Guide gold/platinum DP
interactive problems: adaptive judges, query-limited problemsInteractive Problemsoj.uz interactive-tagged
output-only / grading by score: when there’s no single “correct” answerInteractive Problems (covers the output-only pattern too)past IOI output-only tasks on oj.uz
offline techniques: CDQ, parallel binary search, Mo’s5. D&C, Momixed 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

TopicOur notePractise
suffix automaton/array, string structures18. StringsLibrary Checker string set
advanced geometry: half-plane intersection, convex hull tricks19. Geometrypast IOI finals geometry tasks
FFT/NTT, polynomial tricks17. PolynomialsLibrary Checker FPS set
advanced flows: min-cut modeling, MCMF11. Flows and Matchingpast WF/IOI flow-modeling tasks
game theory, Grundy values20. Game Theoryoj.uz game-theory tasks
constructive / ad hoc at IOI difficulty1. 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

TopicOur notePractise
complexity, fast I/O, templatesGeneralBefore Contest
full chapters 1–8 (problem solving through range queries)1–8CSES problem set end-to-end
graphs: BFS/DFS/shortest paths/DSU/MST10. GraphsCodeforces Div 2 A–D
basic DP9. DPCSES “Dynamic Programming”
team logistics: who reads what, the paper boardContest Strategyrun 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

TopicOur notePractise
trees: LCA, HLD, centroid decomposition, small-to-large12. TreesCodeforces Gym: past regionals (NWERC/NEERC/SWERC easy problems)
flows and bipartite matching11. Flows and Matchingoj.uz / Gym flow-modeling problems
strings: hashing, Z/KMP, suffix structures (intro)18. StringsCSES “String Algorithms”
number theory, combinatorics core14. Number Theory, 15. CombinatoricsProject Euler style + CF number-theory tags
2-SAT, SCC2-SATGym regionals
geometry basics: primitives through convex hullGeometry (01–05)Gym geometry-tagged sets
team triage drill: read-all-first, assign-by-estimateContest Strategytimed 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

TopicOur notePractise
advanced flows: min-cost flow, project selection, Gomory–Hu11. Flows and Matchingpast WF flow problems
advanced trees: link-cut, Kruskal reconstruction, virtual trees12. TreesGym WF sets
FFT/NTT and polynomial tricks17. PolynomialsLibrary Checker
full geometry: half-plane intersection, rotating calipers, Delaunay19. GeometryGym WF geometry problems
game theory: Sprague–Grundy and variantsSprague–GrundyGym game-theory-tagged
linear algebra / matrix tricks, linear recurrences16. Linear AlgebraGym / Library Checker
randomized and numerical methods (hashing under attack, Simplex)22. Randomized, 23. NumericalGym 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

TopicOur notePractise
complexity theory / NP-hardness recognition (so the team doesn’t waste an hour on an NP-hard problem)Complexity Theory and NP-HardnessGym 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 inPetrozavodsk camp sets, Universal Cup
puzzle/ad-hoc pattern recognition under time pressure25. Puzzles, 1. Problem Solvingrecent WF problem 1s / “trick” problems
team speed: pre-written tested library pasted, not re-derived🐬 Templatestime 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 -l to recount)
  • Mine every book in Resources for gaps in the notes