Where to learn and practise: training route, books, courses, blogs, problem sets, contests, libraries and tools. For the sources these notes are based on, see References.

Training Route

Use gates instead of a fixed promise of progress by a certain week. Reading a topic is the first step; an unfamiliar problem solved independently is stronger evidence of mastery.

StageLearn and practiceGate to move on
1. Reliable basicsComplexity, C++ containers, binary search, prefix sums, two pointers, greedy proofs, brute-force checkingIndependently implement and explain standard solutions; eliminate recurring index/overflow errors
2. Core modelingBFS/DFS, shortest paths, DSU/MST, sequence/knapsack/tree DP, modular arithmetic, combinatoricsRecognize an untagged application and prove why the model fits
3. Regional breadthSCC/2-SAT, lowlink, LCA/HLD, lazy trees, matching/flow, strings, convex hull, probabilityComplete mixed timed sets and upsolve all approachable misses
4. Advanced combinationsPersistent/rollback structures, centroid/virtual trees, offline algorithms, digit/profile DP, DP optimizations, suffix structures, NTT, exact geometryCombine two topics, check assumptions, and validate implementation independently
5. Finals preparationMin-cost flow, cuts, advanced geometry, algebra/recurrences, specialized DP, problem-specific constructionsRun full team contests, analyze lost time, and maintain a compact tested notebook
6. Specialist explorationDynamic trees, general matching, planar structures, FPS, advanced transforms, parameterized searchStudy when tasks justify it; retain the ability to explain and debug the implementation

Weekly feedback loop

Use a mix of individual deliberate practice and complete contests. After each session classify failures as missing observation, missing knowledge, incorrect proof, implementation bug, or time allocation. Choose the next exercises from that evidence. Re-solve selected misses after several days, then revisit in a mixed set later.

For each solved problem record the key observation, the rejected approach and why it fails, the correctness argument, complexity, and one adversarial testcase. For each unsolved problem record the smallest useful hint needed. Do not invent an “independent solve” after reading an editorial.

Measure useful outcomes

Track independent solve rate, time to first correct model, avoidable wrong submissions, ability to reproduce code without copying, and success on delayed re-solves. Compare against your own previous sessions. The objective is reliable problem solving across unfamiliar tasks; adding rare algorithm names alone does not establish that skill.

Practice sources

CSES supports foundational breadth; Library Checker provides implementation tasks; AtCoder DP provides a focused DP progression. Move beyond tagged sets to full archived contests and official regional/finals material appropriate to your team.

IOI Resources

Resources specific to IOI-style contests: subtasked scoring, interactive and output-only tasks, national-olympiad-to-IOI progression. For the stage-by-stage plan see 🐬 IOI Roadmap.

Official

SourcePurpose
IOI official sitesyllabus, dates, host-country pages, official results
IOI Syllabusthe authoritative scope document — what IOI can and cannot assume you know
IOI Statisticsper-year, per-problem score distributions; useful to calibrate “what counts as gold”

Practice archives

SourcePurpose
oj.uzthe main IOI/CEOI/JOI practice judge — every past IOI task, split by day and by subtask, with partial scoring
Codeforces Gymsome IOI-adjacent camps and mirrors are hosted here too
CEOI archive / JOI archiveCentral European / Japanese olympiad problems, similar style and difficulty band to IOI, good extra volume
USACO Guidenot IOI-specific, but its bronze→platinum ladder maps almost 1:1 onto IOI’s bronze→gold difficulty bands and is the best “what to learn next” signal when stuck

Subtask / interactive / output-only specific

These three task shapes are IOI-specific enough to be worth separate practice, not just separate reading:

  • Subtasked tasks: always implement and submit the slow/small subtask solution first on oj.uz before attempting the full solution — partial credit is real credit. See Interactive Problems for the submission-workflow side of this; Contest Strategy for the time-allocation side.
  • Interactive tasks (your program and the judge exchange messages, sometimes adaptively): oj.uz tags these; practice the flush-after-every-query discipline described in Interactive Problems.
  • Output-only tasks (you submit just an output file, often for a problem too hard to solve exactly, graded by a scoring function): rare outside IOI-family contests; oj.uz has the historical ones. Treat them as a local-search / heuristic problem — see Randomized Search for simulated annealing and local search, which is the standard approach.

Books and training material

ResourceUse
Competitive Programmer’s Handbook (Laaksonen)closest single book to IOI’s actual difficulty band and style
Competitive Programming 4 (Halim, Halim)broader, includes an explicit IOI/ICPC split in places
Guide to Competitive Programming (Laaksonen)has a dedicated section framed around IOI-style scoring
USACO Guide (web, free)the best free bronze→platinum ladder; use it to sanity-check gaps in 🐬 IOI Roadmap

Who to watch / read (IOI)

SourceWhy
ErrichtoIOI gold medalist; explanations are pitched at exactly the olympiad level, not just ICPC
national-olympiad training-camp public materials (varies by country)often the densest short path from “knows DP” to “IOI gold,” when available in your language

ICPC Resources

Resources specific to ICPC: team contests, full-score-only judging, regional-to-World-Finals progression. For the stage-by-stage plan see 🐬 ICPC Roadmap.

Official

SourcePurpose
ICPC Globalofficial site: rules, regions, dates
ICPC Regionalsfind your actual region’s rules and cutoffs — these vary a lot by region
ICPC World Finals past problemsthe official archive of WF problem sets and results

Practice archives

SourcePurpose
Codeforces Gymthe single best source: almost every past regional (NWERC, SWERC, CERC, NEERC/NERC, GCPC, NCPC, Asia regionals, LatAm) and World Finals set, with a scoreboard to run it as a real team contest
KattisNWERC, NAC, and several other regionals are hosted here with their original judging
Universal Cupan ongoing, high-density team contest series in the WF style — what many top teams use between regionals
Petrozavodsk Campthe highest-density traditional training camp; sets are brutally hard and extremely high quality, usually run via the Gym afterward
CSES, Library Checkernot team/ICPC-specific, but the right place to verify individual algorithm implementations before a team contest

Team-strategy specific

  • Contest Strategy → “ICPC team strategy in depth” and “Contest practice sets” sections already cover: triage, role assignment, the paper board, penalty minimisation, and how to run a Gym set as a 5-hour team practice.
  • 🐬 Templates: a team’s single shared reference document — the thing you print and bring, not re-derive, at minute 30.
  • 🐬 Before Contest: the pre/during/post checklist and constraint→technique lookup, written to be read in 2 minutes at the start of a round.

Books (ICPC)

ResourceUse
Competitive Programming 4 (Halim, Halim, Effendy)written with ICPC specifically in mind; has a team-strategy chapter
KACTL (KTH’s team notebook, on GitHub)not a book — read it anyway: it’s the best single example of what a printed team reference should look like, and several of our structs follow its naming
The Art of Computer Programming and the research-level stack below → Booksonly relevant once you’re hitting the “monster topics” at WF level; see 🐬 ICPC Roadmap stage 4

Who to watch / read (ICPC)

SourceWhy
William Linformer ICPC World Finalist; content aimed at the math/optimization end of WF-level problems
Petr Mitrichevmulti-time WF medalist, deep technical write-ups
KACTL maintainers’ contest write-ups and the team’s own GitHub historyshows how a real top team’s reference notebook evolves across seasons

Advanced Roadmap

If you mean only the “monster” topics that appear in Codeforces 3000+, ICPC WF, IOI, CEOI, JOI Final, AtCoder AGC/Heuristic, Petrozavodsk, then the list becomes much shorter and much scarier.


Formal Power Series (FPS)

  • Polynomial Inverse
  • Polynomial Division
  • Polynomial Modulo
  • Polynomial Logarithm
  • Polynomial Exponential
  • Polynomial Square Root
  • Polynomial k-th Root
  • Polynomial Composition
  • Polynomial Composition Inverse
  • Multipoint Evaluation
  • Polynomial Interpolation
  • Fast Taylor Shift
  • Newton Iteration
  • Chirp Z Transform
  • Online Convolution

Fast Polynomial Algorithms

  • FFT
  • NTT
  • MTT
  • FWHT
  • FMT
  • Fast Zeta Transform
  • Fast Möbius Transform
  • Fast Subset Convolution
  • OR/AND/XOR Convolution
  • Min-Plus Convolution
  • Max-Plus Convolution

Advanced Number Theory

  • Pollard Rho
  • Miller-Rabin
  • Cipolla Algorithm
  • Tonelli-Shanks
  • Baby-Step Giant-Step
  • Pohlig-Hellman
  • Primitive Root
  • Hensel Lifting
  • Lucas Theorem
  • Lucas Generalization
  • CRT Generalization
  • Garner Algorithm
  • Möbius Inversion
  • Dirichlet Convolution
  • Min_25 Sieve
  • Du Jiao Sieve
  • Lagarias–Miller–Odlyzko
  • Lehmer Prime Counting

Advanced Linear Algebra

  • Berlekamp-Massey
  • Wiedemann Algorithm
  • Lanczos Algorithm
  • Gaussian Elimination over GF(2)
  • Sparse Gaussian Elimination
  • Matrix Determinant Mod Prime
  • Characteristic Polynomial
  • Faddeev-LeVerrier
  • Cayley-Hamilton
  • Linear Recurrence via BM

Advanced Graph Theory

  • Link-Cut Tree
  • Top Tree
  • Euler Tour Tree
  • Dynamic Connectivity
  • Holm–de Lichtenberg–Thorup
  • Dynamic MST
  • Gomory-Hu Tree
  • Dominator Tree
  • Blossom Algorithm
  • Edmonds Blossom V
  • General Graph Matching
  • Maximum Cardinality Search
  • Maximum Clique
  • Treewidth DP
  • Steiner Tree DP
  • Virtual Tree
  • Cactus Graph
  • Block-Cut Tree
  • SPQR Tree

Advanced Data Structures

  • Persistent Segment Tree
  • Persistent Treap
  • Persistent Union Find
  • Rollback Union Find
  • Wavelet Tree
  • Wavelet Matrix
  • Li Chao Segment Tree
  • Mergeable Heap
  • Leftist Heap
  • Pairing Heap
  • Fibonacci Heap
  • Soft Heap
  • Treap Beats
  • Segment Tree Beats
  • Kinetic Segment Tree
  • Interval Tree
  • Rope
  • Implicit Treap
  • Chtholly Tree
  • Sqrt Tree
  • Van Emde Boas Tree
  • Y-fast Trie
  • X-fast Trie

Advanced DP Optimizations

  • Knuth Optimization
  • Divide & Conquer Optimization
  • Alien Trick
  • SMAWK
  • Monge Optimization
  • Quadrangle Inequality
  • Convex Hull Trick
  • Dynamic Convex Hull
  • Li Chao
  • Slope Trick
  • Broken Profile DP
  • Plug DP
  • Fast Subset DP
  • SOS DP
  • Inclusion DP

Advanced String Algorithms

  • Suffix Automaton
  • Suffix Tree (Ukkonen)
  • Eertree
  • Lyndon Decomposition
  • Booth Algorithm
  • Burrows-Wheeler Transform
  • FM Index
  • Aho-Corasick Automaton
  • Palindromic Automaton
  • LCP Cartesian Tree
  • Suffix Array DC3
  • SA-IS

Advanced Geometry

  • Half Plane Intersection
  • Delaunay Triangulation
  • Voronoi Diagram
  • Minkowski Sum
  • Rotating Calipers
  • Bentley-Ottmann
  • Dynamic Convex Hull
  • Closest Pair Randomized
  • Linear Programming
  • Simplex Algorithm

Advanced Combinatorics

  • Burnside Lemma
  • Pólya Enumeration
  • Exponential Generating Functions
  • Ordinary Generating Functions
  • Species Theory
  • Inclusion–Exclusion
  • Möbius Inversion
  • Lagrange Inversion
  • Stirling Transform
  • Binomial Transform

Offline Algorithms

  • CDQ Divide & Conquer
  • Parallel Binary Search
  • Mo’s with Updates
  • Mo’s on Trees
  • Fractional Cascading
  • Offline Dynamic Connectivity

Randomized Algorithms

  • Randomized Incremental Construction
  • Randomized BST
  • Treap
  • Monte Carlo Algorithms
  • Las Vegas Algorithms
  • Simulated Annealing
  • Beam Search
  • Local Search

Bitmask/Transforms

  • FWHT
  • Fast Zeta Transform
  • Fast Möbius Transform
  • Fast Subset Convolution
  • Walsh Transform
  • Hadamard Transform

Extremely Rare (Mostly World Finals)

  • Matroid Intersection
  • Matroid Union
  • Matroid Parity
  • Edmonds Matroid Algorithm
  • Pfaffian Orientation
  • Tutte Matrix
  • Kirchhoff Matrix Tree Theorem
  • Inclusion–Exclusion over Subsets
  • Dancing Links (Algorithm X)
  • Exact Cover
  • General SAT Reductions
  • Gaussian Elimination on Bitsets
  • FKT Algorithm
  • Blossom V Implementation
  • Planar Separator Theorem
  • Heavy-Light with Dynamic Trees
  • Dynamic Trees with Top Trees

The “God Tier” topics (seen only a handful of times)

  • Formal Power Series (complete toolkit)
  • Fast Subset Convolution
  • Min_25 Sieve
  • Du Jiao Sieve
  • Lagarias–Miller–Odlyzko prime counting
  • Link-Cut Trees
  • Top Trees
  • SPQR Trees
  • Matroid Intersection
  • Tutte Matrix
  • FKT Algorithm
  • Edmonds Blossom V
  • Holm Dynamic Connectivity
  • Dynamic MST
  • Wavelet Matrix
  • Segment Tree Beats
  • Slope Trick
  • Species Theory
  • Lagrange Inversion
  • Polynomial Composition / Inverse
  • Chirp Z Transform

These are the topics that distinguish top competitors (roughly Codeforces 3000+), ICPC World Finals medalists, and IOI gold medalists from even very strong competitive programmers.

Books

Legend
DifficultyScoreLevelDescription
🟢 Green1.0-6.0UndergradFoundational and introductory.
🟡 Yellow7.0-8.0Advanced Undergrad / Early GraduateIntermediate with moderate prerequisites.
🟠 Orange8.5-9.0GraduateAdvanced and mathematically demanding.
🔴 Red9.5-10.0Graduate / ResearchExpert or research-level material.

1) General Algorithms

BookAuthor(s)LevelDifficulty
Introduction to AlgorithmsCormen, Leiserson, Rivest, SteinUndergrad7.0
The Algorithm Design ManualSteven SkienaUndergrad7.0
Algorithm DesignKleinberg, TardosGraduate8.5
AlgorithmsDasgupta, Papadimitriou, VaziraniUndergrad7.0
Competitive Programming 4Halim, Halim, EffendyUndergrad7.0
Competitive Programmer’s HandbookAntti LaaksonenUndergrad7.0
Programming ChallengesSkiena, RevillaUndergrad7.0
Algorithms UnlockedCormenUndergrad7.0
Thinking in AlgorithmsPanos LouridasUndergrad7.0
Programming PearlsJon BentleyUndergrad7.0
The Practice of ProgrammingKernighan & PikeUndergrad7.0
Algorithmic Information TheoryChaitinResearch9.5
Problem Solving with Algorithms and Data Structures Using PythonMiller, RanumUndergrad7.0
Guide to Competitive ProgrammingAntti LaaksonenUndergrad7.0
Competitive Programming 3/4Steven HalimUndergrad7.0
The Hitchhiker’s Guide to the Programming ContestsVariousUndergrad7.0
Competitive Programming (cpbook.net)HalimUndergrad7.0
Looking for a ChallengeVariousUndergrad7.0
AlgorithmsRobert Sedgewick & Kevin WayneUndergrad7.0
AlgorithmsJeff EricksonUndergrad7.0
Algorithms IlluminatedTim RoughgardenUndergrad7.0**
プログラミングコンテストチャレンジブックVariousUndergrad7.0
算法竞赛入门经典VariousUndergrad7.0
算法竞赛入门经典·训练指南VariousUndergrad7.0
算法艺术与信息学竞赛VariousGraduate8.5

2) Data Structures

BookAuthor(s)LevelDifficulty
Introduction to AlgorithmsCormen, Leiserson, Rivest, SteinUndergrad7.0
Data Structures and Algorithm Analysis in C++Mark Allen WeissUndergrad7.0
Data Structures and Algorithms in JavaGoodrich, Tamassia, GoldwasserUndergrad7.0
Advanced Data StructuresPeter BrassGraduate8.5
Data Structures and Network AlgorithmsRobert TarjanGraduate8.5
Purely Functional Data StructuresChris OkasakiGraduate8.5
Handbook of Data Structures and ApplicationsMehta, Sahni, et al.Graduate8.5
The Art of Computer Programming, Vol. 1KnuthGraduate8.5
The Art of Computer Programming, Vol. 3KnuthGraduate8.5
The Art of Computer Programming, Vol. 4AKnuthResearch9.5
The Art of Computer Programming, Vol. 4BKnuthResearch9.5

3) Graph Algorithms

BookAuthor(s)LevelDifficulty
Introduction to Graph TheoryDouglas WestUndergrad7.0
Graph TheoryBondy, MurtyUndergrad7.0
Graph TheoryReinhard DiestelGraduate8.5
Graph Theory and Its ApplicationsGross, YellenUndergrad7.0
Modern Graph TheoryBollobásGraduate8.5
Extremal Graph TheoryBollobásResearch9.5
Digraphs: Theory, Algorithms and ApplicationsBang‑Jensen, GutinGraduate8.5
Algorithmic Graph Theory and Perfect GraphsGolumbicGraduate8.5
Network FlowsAhuja, Magnanti, OrlinGraduate8.5
Combinatorial Optimization: Polyhedra and EfficiencySchrijverResearch9.5
Graph Minors seriesRobertson, SeymourResearch9.5
Matching TheoryLovász, PlummerResearch9.5
Algebraic Graph TheoryGodsil, RoyleResearch10.0

4) Trees and Dynamic Trees

BookAuthor(s)LevelDifficulty
Introduction to AlgorithmsCormen, Leiserson, Rivest, SteinUndergrad7.0
Data Structures and Network AlgorithmsTarjanGraduate8.5
Graph TheoryDiestelGraduate8.5
Algorithmic Graph Theory and Perfect GraphsGolumbicGraduate8.5
The Art of Computer Programming, Vol. 1KnuthGraduate8.5
Dynamic Treesadvanced monographsResearch9.5
Tree Algorithms and Applicationsadvanced lecture notesGraduate8.5

5) String Algorithms

BookAuthor(s)LevelDifficulty
String AlgorithmsSmythUndergrad7.0
Algorithms on Strings, Trees, and SequencesGusfieldGraduate8.5
Text AlgorithmsCrochemore, RytterGraduate8.5
Handbook of Exact String Matching AlgorithmsCrochemore, Hancart, LecroqGraduate8.5
Combinatorial Pattern MatchingApostolico, Galil (eds.)Graduate8.5
The Art of Computer Programming, Vol. 4AKnuthResearch9.5
Compressed Text Indexingadvanced monographsResearch9.5
Pattern Matching Algorithmsadvanced referencesGraduate8.5
Suffix Trees and Their Applicationsadvanced lecture notesResearch9.5

6) Number Theory

BookAuthor(s)LevelDifficulty
Elementary Number TheoryBurtonUndergrad7.0
An Introduction to the Theory of NumbersHardy, WrightUndergrad7.0
A Computational Introduction to Number Theory and AlgebraShoupUndergrad7.0
A Classical Introduction to Modern Number TheoryIreland, RosenGraduate8.5
An Introduction to Analytic Number TheoryApostolGraduate8.5
Introduction to Modern Number TheoryMurty, EsmondeGraduate8.5
A Course in ArithmeticSerreGraduate8.5
Algorithmic Number Theory, Vol. 1CohenGraduate8.5
Algorithmic Number Theory, Vol. 2CohenGraduate8.5
Prime Numbers: A Computational PerspectiveCrandall, PomeranceGraduate8.5
Algebraic Number TheoryNeukirchResearch9.5
Introduction to Cyclotomic FieldsWashingtonResearch9.5
Modern Olympiad Number TheoryAditya KhurmiUndergrad7.0
An Introduction to Number TheoryGraham Everest & Thomas WardUndergrad7.0

7) Algebra, Polynomials, and Symbolic Computation

BookAuthor(s)LevelDifficulty
Abstract AlgebraDummit, FooteUndergrad7.0
Contemporary Abstract AlgebraGallianUndergrad7.0
AlgebraMichael ArtinGraduate8.5
AlgebraSerge LangGraduate8.5
Algorithms for Computer AlgebraGeddes, Czapor, LabahnGraduate8.5
Ideals, Varieties, and AlgorithmsCox, Little, O’SheaGraduate8.5
Computational Commutative Algebra Vol. IKreuzer, RobbianoResearch9.5
Computational Commutative Algebra Vol. IIKreuzer, RobbianoResearch9.5
Polynomial Algorithms in Computer Algebravon zur Gathen, GerhardResearch9.5
Modern Computer Algebravon zur Gathen, GerhardResearch9.5
Gröbner Bases and Convex PolytopesSturmfelsResearch9.5
Combinatorial Commutative AlgebraMiller, SturmfelsResearch10.0
Concrete MathematicsGraham, Knuth & PatashnikUndergrad7.0

8) Linear Algebra and Matrix Algorithms

BookAuthor(s)LevelDifficulty
Linear Algebra Done RightSheldon AxlerUndergrad7.0
Introduction to Linear AlgebraStrangUndergrad7.0
Applied and Computational Linear AlgebraStrangUndergrad7.0
Matrix ComputationsGolub, Van LoanGraduate8.5
Numerical Linear AlgebraTrefethen, BauGraduate8.5
Topics in Matrix AnalysisHorn, JohnsonGraduate8.5
Matrix AnalysisHorn, JohnsonResearch9.5
Algebraic Complexity TheoryBürgisser, Clausen, ShokrollahiResearch9.5

9) Geometry (merged Computational & Classical)

BookAuthor(s)LevelDifficulty
Computational Geometry in CJoseph O’RourkeUndergrad7.0
Computational Geometry: Algorithms and Applicationsde Berg, Cheong, van Kreveld, OvermarsUndergrad7.0
Computational GeometryPreparata, ShamosGraduate8.5
Discrete and Computational GeometryMatoušekGraduate8.5
Handbook of Discrete and Computational GeometryGoodman, O’Rourke (eds.)Graduate8.5
Algorithms in Combinatorial GeometryEdelsbrunnerGraduate8.5
Geometric Folding AlgorithmsDemaine, O’RourkeResearch9.5
Computational Topology: An IntroductionEdelsbrunner, HarerGraduate8.5
Delaunay Triangulations and Voronoi Diagramsadvanced monographsResearch9.5
Euclidean Geometry in Mathematical OlympiadsEvan ChenUndergrad7.0
Algebraic GeometryRobin HartshorneResearch10.0
Modern Differential Geometry for PhysicistsChris IshamGraduate8.5

10) Combinatorics

BookAuthor(s)LevelDifficulty
A Course in Combinatoricsvan Lint, WilsonUndergrad7.0
Introductory CombinatoricsBrualdiUndergrad7.0
Applied CombinatoricsTuckerUndergrad7.0
Enumerative Combinatorics, Vol. 1StanleyGraduate8.5
Enumerative Combinatorics, Vol. 2StanleyResearch9.5
GeneratingfunctionologyWilfGraduate8.5
The Probabilistic MethodAlon, SpencerGraduate8.5
Combinatorial OptimizationSchrijverResearch9.5
Extremal CombinatoricsJuknaResearch9.5
Proofs from THE BOOKAigner, ZieglerUndergrad7.0
Algebraic CombinatoricsStanleyResearch10.0
A Path to Combinatorics for UndergraduatesTitu AndreescuUndergrad7.0
Olympiad CombinatoricsPranav SriramUndergrad7.0
Combinatorial OptimizationKorte & VygenGraduate8.5

11) Dynamic Programming and Optimization

BookAuthor(s)LevelDifficulty
Introduction to AlgorithmsCormen, Leiserson, Rivest, SteinUndergrad7.0
Algorithm DesignKleinberg, TardosGraduate8.5
Competitive Programming 4Halim, Halim, EffendyUndergrad7.0
Dynamic Programming and Optimal ControlBertsekasGraduate8.5
Combinatorial OptimizationSchrijverResearch9.5
Combinatorial Optimization: Polyhedra and EfficiencySchrijverResearch9.5
OptimizationBazaraa, Sherali, ShettyGraduate8.5
Integer and Combinatorial OptimizationNemhauser, WolseyGraduate8.5
Convex OptimizationBoyd & VandenbergheGraduate8.5

12) Probability and Randomized Algorithms

BookAuthor(s)LevelDifficulty
A First Course in ProbabilityRossUndergrad7.0
Probability and ComputingMitzenmacher, UpfalGraduate8.5
Randomized AlgorithmsMotwani, RaghavanGraduate8.5
The Probabilistic MethodAlon, SpencerGraduate8.5
Introduction to AlgorithmsCormen, Leiserson, Rivest, SteinUndergrad7.0
The Art of Computer Programming, Vol. 2KnuthGraduate8.5
Fifty Challenging Problems in ProbabilityVariousUndergrad7.0

13) Complexity Theory and NP‑Hardness

BookAuthor(s)LevelDifficulty
Introduction to the Theory of ComputationSipserUndergrad7.0
Elements of the Theory of ComputationLewis, PapadimitriouGraduate8.5
Computers and IntractabilityGarey, JohnsonGraduate8.5
Computational ComplexityPapadimitriouGraduate8.5
Computational Complexity: A Modern ApproachArora, BarakGraduate8.5
Complexity and Real ComputationBlum, Cucker, Shub, SmaleResearch9.5
The Nature of ComputationMoore, MertensGraduate8.5

14) Approximation Algorithms and Hard Optimization

BookAuthor(s)LevelDifficulty
Approximation AlgorithmsVaziraniGraduate8.5
The Design of Approximation AlgorithmsWilliamson, ShmoysGraduate8.5
Computers and IntractabilityGarey, JohnsonGraduate8.5
Combinatorial OptimizationSchrijverResearch9.5
Randomized AlgorithmsMotwani, RaghavanGraduate8.5
The Probabilistic MethodAlon, SpencerGraduate8.5

15) Cryptography and Computational Number Theory

BookAuthor(s)LevelDifficulty
An Introduction to Mathematical CryptographyHoffstein, Pipher, SilvermanUndergrad7.0
Introduction to CryptographyKatz, LindellUndergrad7.0
Guide to Elliptic Curve CryptographyHankerson, Menezes, VanstoneGraduate8.5
A Graduate Course in Applied CryptographyBoneh, ShoupGraduate8.5
Handbook of Applied CryptographyMenezes, van Oorschot, VanstoneGraduate8.5
Mathematics of Public Key Cryptographyadvanced textsGraduate8.5
Elliptic CurvesSilvermanResearch9.5
Prime Numbers: A Computational PerspectiveCrandall, PomeranceGraduate8.5

16) Automata, Parsing, and Formal Languages

BookAuthor(s)LevelDifficulty
Introduction to Automata Theory, Languages, and ComputationHopcroft, Motwani, UllmanUndergrad7.0
Introduction to the Theory of ComputationSipserUndergrad7.0
Compilers: Principles, Techniques, and ToolsAho, Lam, Sethi, UllmanUndergrad7.0
Parsing Techniques: A Practical GuideGrune, JacobsGraduate8.5
The Theory of Parsing, Translation, and CompilingAho, UllmanGraduate8.5
Formal Languages and Their Relation to AutomataHarrisonGraduate8.5
Introduction to Language Theory and Translationadvanced referencesGraduate8.5

17) Game Theory and Combinatorial Games

BookAuthor(s)LevelDifficulty
A Course in Game TheoryOsborne, RubinsteinUndergrad7.0
Game TheoryFudenberg, TiroleGraduate8.5
Algorithmic Game TheoryNisan, Roughgarden, Tardos, VaziraniGraduate8.5
Combinatorial Game TheoryConwayGraduate8.5
Winning Ways for Your Mathematical Plays (4 vols.)Berlekamp, Conway, GuyGraduate8.5
On Numbers and GamesConwayGraduate8.5
The Theory of Games and Economic Behaviorvon Neumann, MorgensternResearch9.5
Combinatorial Game TheoryThomas S. FergusonGraduate8.5
Composite Mathematical GamesVariousUndergrad6.0

18) Parallel, External‑Memory, and Streaming

BookAuthor(s)LevelDifficulty
Introduction to Parallel AlgorithmsJáJáGraduate8.5
Designing Efficient Algorithms for Parallel ComputersQuinnGraduate8.5
The Design and Analysis of Parallel AlgorithmsLeightonGraduate8.5
External Memory Algorithms and Data Structuresadvanced monographsResearch9.5
Cache‑Oblivious Algorithmssurvey / monographsResearch9.5
Streaming Algorithmssurvey literatureResearch9.5
Algorithm Engineeringadvanced referencesGraduate8.5

19) Search, Backtracking, Constraint Solving

BookAuthor(s)LevelDifficulty
Artificial Intelligence: A Modern ApproachRussell, NorvigUndergrad7.0
Constraint ProcessingDechterGraduate8.5
Handbook of SatisfiabilityBiere, Heule, van Maaren, Walsh (eds.)Research9.5
The Calculus of ComputationBiere, et al.Research9.5
Decision Making and Searchadvanced monographsGraduate8.5

20) Computational Topology and Advanced Geometry

BookAuthor(s)LevelDifficulty
Computational Topology: An IntroductionEdelsbrunner, HarerGraduate8.5
Algebraic TopologyHatcherGraduate8.5
Elements of Algebraic TopologyMunkresGraduate8.5
Geometric Folding AlgorithmsDemaine, O’RourkeResearch9.5
Handbook of Discrete and Computational GeometryGoodman, O’Rourke (eds.)Graduate8.5
Computational GeometryPreparata, ShamosGraduate8.5
Persistent HomologyEdelsbrunner & HarerResearch9.5

21) Research‑Level CP and Theory Stack

BookAuthor(s)LevelDifficulty
The Art of Computer Programming, Vol. 4AKnuthResearch9.5
The Art of Computer Programming, Vol. 4BKnuthResearch9.5
The Art of Computer Programming, Vol. 4CKnuthResearch10.0
The Art of Computer Programming, Vol. 4D+ (fascicles)KnuthResearch10.0
Combinatorial Optimization: Polyhedra and EfficiencySchrijverResearch9.5
Polynomial Algorithms in Computer Algebravon zur Gathen, GerhardResearch9.5
Modern Computer Algebravon zur Gathen, GerhardResearch9.5
Algebraic Complexity TheoryBürgisser, Clausen, ShokrollahiResearch9.5
Extremal Graph TheoryBollobásResearch9.5
Algebraic Number TheoryNeukirchResearch9.5
Computational Commutative AlgebraKreuzer, RobbianoResearch9.5
Complexity and Real ComputationBlum, Cucker, Shub, SmaleResearch9.5
Matching TheoryLovász, PlummerResearch9.5
Graph Minors seriesRobertson, SeymourResearch9.5
Suffix Trees and Their Applicationsadvanced lecture notesResearch9.5

22) Problem‑Solving and Mathematical Thinking

BookAuthor(s)LevelDifficulty
How to Solve ItGeorge PólyaUndergrad6.0
The Art and Craft of Problem SolvingPaul ZeitzUndergrad7.0
Problem‑Solving StrategiesArthur EngelUndergrad7.0
How to Prove ItDaniel J. VellemanUndergrad6.0
Putnam and BeyondAndreescu et al.Undergrad7.0
Problem Books in MathematicsVariousUndergrad7.0

23) Analysis and Sequences

BookAuthor(s)LevelDifficulty
SequencesHalberstam & RothGraduate8.5
Introduction to the Analysis of AlgorithmsSedgewick & FlajoletGraduate8.5
Analysis of AlgorithmsJeffrey McConnellUndergrad7.0
Practical Analysis of AlgorithmsVrajitoru & KnightUndergrad7.0
Analytic CombinatoricsFlajolet & SedgewickResearch9.5
Asymptotic Methods in Analysisde BruijnGraduate8.5

Blogs

Personal blogs only — a named individual’s own writing (solution write-ups, derivations, “how I actually thought about this”), not platforms, wikis, judges or community link-dumps (Luogu, OI Wiki, cp-algorithms.com, etc. are OJs/references and live in 🐬 Online Judges or elsewhere on this page, not here). Grouped by language, since the Chinese, Japanese and Russian CP ecosystems each have their own blog culture largely invisible from the English-speaking side.

English

Chinese (中文)

  • command_block 的博客 — advanced-topic derivations (FPS, polynomial algorithms, DP optimizations) at a level above most English tutorials.
  • WJMZBMR’s Blog — advanced algorithm discussions from a multiple-time ICPC World Finalist.
  • xudyh’s Blog — number-theory sieve techniques (the “Du sieve” is named after this author).

Japanese (日本語)

Russian (русский)

  • e-maxx.ru/algo — Maxim Ivanov’s original Russian algorithm encyclopedia; most of what’s now on cp-algorithms.com started as a translation of this site.
  • adamant’s Codeforces blog — advanced number theory, FFT and polynomial-algorithm derivations, written in English but from the Russian competitive tradition; also started the e-maxx-eng translation effort.

Courses

  • MIT 6.006: algorithms, data structures, modeling, and analysis. Work the assignments instead of watching only lectures.
  • MIT 6.046J: deeper design and proof practice. Translate each theorem into a precise algorithm contract.
  • CSES problem set: use as a practical exercise sequence alongside theory.
  • AtCoder Educational DP Contest: derive state meanings before reading editorial solutions.

A useful study cycle is derivation, proof, implementation from memory, differential testing, and an unfamiliar application. When a lesson is too difficult, identify the specific prerequisite and practice it; when it is easy, move to mixed timed problems. Do not measure progress only by videos completed or pages read.

Websites and Judges

Use a small collection with a specific purpose instead of collecting unused bookmarks.

SourcePurpose
CSESBuild foundational implementation fluency
Library CheckerJudge reusable algorithm implementations
AtCoder contestsTimed contests and editorial-based upsolving
CodeforcesContests, problem archive, constructive practice
ICPCOfficial competition information; check your actual event’s rules
cp-algorithmsTopic explanations and implementation references
KACTLConcise contest notebook examples and tests
AtCoder LibraryMaintained reusable algorithms and documented contracts

For every topic, pick an implementation task, an application task, and a mixed task without a visible tag. Record mistakes and return after a delay. A passed library task checks that interface and test set; it does not prove every modified version correct.

Every other judge (SPOJ, Luogu, Baekjoon, HDU, every regional archive) is tiered and organized on 🐬 Online Judges — that page replaces what used to be a flat, undifferentiated 90-link dump here.

Practice sheets (topic-tagged problem lists, not judges themselves): TLE Eliminators CP Sheet, Striver A-Z DSA Sheet, Codeforces Topic-wise Sheet, Problems That Will Make You Learn Something New.

Competitions

Libraries

Which code you can rely on already existing, and which you must carry yourself.

The three that matter

LibraryProvidesAvailability
STLcontainers (vector, map, set, priority_queue), algorithms (sort, lower_bound, next_permutation)everywhere
GNU PBDSorder-statistics tree, alternative hash tablesGCC only — Codeforces, AtCoder, most judges
ACL (AtCoder Library)DSU, Fenwick, segment tree, lazy segment tree, max flow, MCMF, SCC, 2-SAT, NTT convolution, modint, string algorithmsAtCoder natively; elsewhere by pasting

Between them these cover almost everything a contest needs. They are complementary rather than overlapping: the STL has no DSU and no segment tree, and ACL has no containers.

What PBDS adds

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<class T> using oset =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  • order_of_key(x) — how many elements are less than
  • find_by_order(k) — the -th smallest

Both . That is a genuinely useful structure the STL simply lacks; see Ordered Set. gp_hash_table is also noticeably faster than unordered_map, though it needs the same custom hash to be safe from anti-hash tests.

oset is a set, not a multiset

Duplicates are silently dropped. The usual workaround is to store pair<value, uniqueIndex> and compare lexicographically.

What ACL adds

DSU, Fenwick, segment tree, lazy segment tree, max flow (Dinic), min-cost flow, SCC, 2-SAT, NTT convolution, modint, and suffix arrays / Z-algorithm. It is well tested and short. On AtCoder it is available with #include <atcoder/all>; elsewhere the source is small enough to paste the one part you need.

It is worth reading even if you never use it — the lazy segment tree and modint in particular are unusually clean designs.

The others

LibraryVerdict
KACTL (KTH)not a compiler library — a curated set of very concise implementations, and the best single thing to read for ICPC preparation
Boostoccasionally useful (multiprecision, graph), rarely available, rarely needed
cp-algorithmsa reference site, not a library; the explanations are the value
Your own templatethe one that actually matters — see Contest Templates

What strong competitors actually use

STL, PBDS occasionally, ACL or their own equivalents, and a personal template of macros and tested implementations. Almost nothing external. The reason is practical: a library you did not write is a library you cannot debug at minute 90 of a contest.

The order to learn them

  1. STL — thoroughly, including the algorithm header
  2. PBDS — the ordered set, in an afternoon
  3. ACL — read the source of the structures you already understand
  4. KACTL — read for the compression tricks, paste sparingly

After that, further progress comes from algorithms and problem-solving, not from more libraries.

See also: STL Containers · Library Snippets · Tools · Ordered Set

Tools

More

Kept because each is genuinely best-in-class for what it does, not because it showed up in a search. Everything generic (duplicate intro-CS courses, unremarkable YouTube channels, interview-prep filler) was cut.