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.
Stage
Learn and practice
Gate to move on
1. Reliable basics
Complexity, C++ containers, binary search, prefix sums, two pointers, greedy proofs, brute-force checking
Independently implement and explain standard solutions; eliminate recurring index/overflow errors
Study 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.
not 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
Resource
Use
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
IOI 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.
the 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
not 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)
Resource
Use
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 → Books
only relevant once you’re hitting the “monster topics” at WF level; see 🐬 ICPC Roadmap stage 4
KACTL maintainers’ contest write-ups and the team’s own GitHub history
shows 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
Difficulty
Score
Level
Description
🟢 Green
1.0-6.0
Undergrad
Foundational and introductory.
🟡 Yellow
7.0-8.0
Advanced Undergrad / Early Graduate
Intermediate with moderate prerequisites.
🟠 Orange
8.5-9.0
Graduate
Advanced and mathematically demanding.
🔴 Red
9.5-10.0
Graduate / Research
Expert or research-level material.
1) General Algorithms
Book
Author(s)
Level
Difficulty
Introduction to Algorithms
Cormen, Leiserson, Rivest, Stein
Undergrad
7.0
The Algorithm Design Manual
Steven Skiena
Undergrad
7.0
Algorithm Design
Kleinberg, Tardos
Graduate
8.5
Algorithms
Dasgupta, Papadimitriou, Vazirani
Undergrad
7.0
Competitive Programming 4
Halim, Halim, Effendy
Undergrad
7.0
Competitive Programmer’s Handbook
Antti Laaksonen
Undergrad
7.0
Programming Challenges
Skiena, Revilla
Undergrad
7.0
Algorithms Unlocked
Cormen
Undergrad
7.0
Thinking in Algorithms
Panos Louridas
Undergrad
7.0
Programming Pearls
Jon Bentley
Undergrad
7.0
The Practice of Programming
Kernighan & Pike
Undergrad
7.0
Algorithmic Information Theory
Chaitin
Research
9.5
Problem Solving with Algorithms and Data Structures Using Python
Miller, Ranum
Undergrad
7.0
Guide to Competitive Programming
Antti Laaksonen
Undergrad
7.0
Competitive Programming 3/4
Steven Halim
Undergrad
7.0
The Hitchhiker’s Guide to the Programming Contests
Various
Undergrad
7.0
Competitive Programming (cpbook.net)
Halim
Undergrad
7.0
Looking for a Challenge
Various
Undergrad
7.0
Algorithms
Robert Sedgewick & Kevin Wayne
Undergrad
7.0
Algorithms
Jeff Erickson
Undergrad
7.0
Algorithms Illuminated
Tim Roughgarden
Undergrad
7.0**
プログラミングコンテストチャレンジブック
Various
Undergrad
7.0
算法竞赛入门经典
Various
Undergrad
7.0
算法竞赛入门经典·训练指南
Various
Undergrad
7.0
算法艺术与信息学竞赛
Various
Graduate
8.5
2) Data Structures
Book
Author(s)
Level
Difficulty
Introduction to Algorithms
Cormen, Leiserson, Rivest, Stein
Undergrad
7.0
Data Structures and Algorithm Analysis in C++
Mark Allen Weiss
Undergrad
7.0
Data Structures and Algorithms in Java
Goodrich, Tamassia, Goldwasser
Undergrad
7.0
Advanced Data Structures
Peter Brass
Graduate
8.5
Data Structures and Network Algorithms
Robert Tarjan
Graduate
8.5
Purely Functional Data Structures
Chris Okasaki
Graduate
8.5
Handbook of Data Structures and Applications
Mehta, Sahni, et al.
Graduate
8.5
The Art of Computer Programming, Vol. 1
Knuth
Graduate
8.5
The Art of Computer Programming, Vol. 3
Knuth
Graduate
8.5
The Art of Computer Programming, Vol. 4A
Knuth
Research
9.5
The Art of Computer Programming, Vol. 4B
Knuth
Research
9.5
3) Graph Algorithms
Book
Author(s)
Level
Difficulty
Introduction to Graph Theory
Douglas West
Undergrad
7.0
Graph Theory
Bondy, Murty
Undergrad
7.0
Graph Theory
Reinhard Diestel
Graduate
8.5
Graph Theory and Its Applications
Gross, Yellen
Undergrad
7.0
Modern Graph Theory
Bollobás
Graduate
8.5
Extremal Graph Theory
Bollobás
Research
9.5
Digraphs: Theory, Algorithms and Applications
Bang‑Jensen, Gutin
Graduate
8.5
Algorithmic Graph Theory and Perfect Graphs
Golumbic
Graduate
8.5
Network Flows
Ahuja, Magnanti, Orlin
Graduate
8.5
Combinatorial Optimization: Polyhedra and Efficiency
Schrijver
Research
9.5
Graph Minors series
Robertson, Seymour
Research
9.5
Matching Theory
Lovász, Plummer
Research
9.5
Algebraic Graph Theory
Godsil, Royle
Research
10.0
4) Trees and Dynamic Trees
Book
Author(s)
Level
Difficulty
Introduction to Algorithms
Cormen, Leiserson, Rivest, Stein
Undergrad
7.0
Data Structures and Network Algorithms
Tarjan
Graduate
8.5
Graph Theory
Diestel
Graduate
8.5
Algorithmic Graph Theory and Perfect Graphs
Golumbic
Graduate
8.5
The Art of Computer Programming, Vol. 1
Knuth
Graduate
8.5
Dynamic Trees
advanced monographs
Research
9.5
Tree Algorithms and Applications
advanced lecture notes
Graduate
8.5
5) String Algorithms
Book
Author(s)
Level
Difficulty
String Algorithms
Smyth
Undergrad
7.0
Algorithms on Strings, Trees, and Sequences
Gusfield
Graduate
8.5
Text Algorithms
Crochemore, Rytter
Graduate
8.5
Handbook of Exact String Matching Algorithms
Crochemore, Hancart, Lecroq
Graduate
8.5
Combinatorial Pattern Matching
Apostolico, Galil (eds.)
Graduate
8.5
The Art of Computer Programming, Vol. 4A
Knuth
Research
9.5
Compressed Text Indexing
advanced monographs
Research
9.5
Pattern Matching Algorithms
advanced references
Graduate
8.5
Suffix Trees and Their Applications
advanced lecture notes
Research
9.5
6) Number Theory
Book
Author(s)
Level
Difficulty
Elementary Number Theory
Burton
Undergrad
7.0
An Introduction to the Theory of Numbers
Hardy, Wright
Undergrad
7.0
A Computational Introduction to Number Theory and Algebra
Shoup
Undergrad
7.0
A Classical Introduction to Modern Number Theory
Ireland, Rosen
Graduate
8.5
An Introduction to Analytic Number Theory
Apostol
Graduate
8.5
Introduction to Modern Number Theory
Murty, Esmonde
Graduate
8.5
A Course in Arithmetic
Serre
Graduate
8.5
Algorithmic Number Theory, Vol. 1
Cohen
Graduate
8.5
Algorithmic Number Theory, Vol. 2
Cohen
Graduate
8.5
Prime Numbers: A Computational Perspective
Crandall, Pomerance
Graduate
8.5
Algebraic Number Theory
Neukirch
Research
9.5
Introduction to Cyclotomic Fields
Washington
Research
9.5
Modern Olympiad Number Theory
Aditya Khurmi
Undergrad
7.0
An Introduction to Number Theory
Graham Everest & Thomas Ward
Undergrad
7.0
7) Algebra, Polynomials, and Symbolic Computation
Book
Author(s)
Level
Difficulty
Abstract Algebra
Dummit, Foote
Undergrad
7.0
Contemporary Abstract Algebra
Gallian
Undergrad
7.0
Algebra
Michael Artin
Graduate
8.5
Algebra
Serge Lang
Graduate
8.5
Algorithms for Computer Algebra
Geddes, Czapor, Labahn
Graduate
8.5
Ideals, Varieties, and Algorithms
Cox, Little, O’Shea
Graduate
8.5
Computational Commutative Algebra Vol. I
Kreuzer, Robbiano
Research
9.5
Computational Commutative Algebra Vol. II
Kreuzer, Robbiano
Research
9.5
Polynomial Algorithms in Computer Algebra
von zur Gathen, Gerhard
Research
9.5
Modern Computer Algebra
von zur Gathen, Gerhard
Research
9.5
Gröbner Bases and Convex Polytopes
Sturmfels
Research
9.5
Combinatorial Commutative Algebra
Miller, Sturmfels
Research
10.0
Concrete Mathematics
Graham, Knuth & Patashnik
Undergrad
7.0
8) Linear Algebra and Matrix Algorithms
Book
Author(s)
Level
Difficulty
Linear Algebra Done Right
Sheldon Axler
Undergrad
7.0
Introduction to Linear Algebra
Strang
Undergrad
7.0
Applied and Computational Linear Algebra
Strang
Undergrad
7.0
Matrix Computations
Golub, Van Loan
Graduate
8.5
Numerical Linear Algebra
Trefethen, Bau
Graduate
8.5
Topics in Matrix Analysis
Horn, Johnson
Graduate
8.5
Matrix Analysis
Horn, Johnson
Research
9.5
Algebraic Complexity Theory
Bürgisser, Clausen, Shokrollahi
Research
9.5
9) Geometry (merged Computational & Classical)
Book
Author(s)
Level
Difficulty
Computational Geometry in C
Joseph O’Rourke
Undergrad
7.0
Computational Geometry: Algorithms and Applications
de Berg, Cheong, van Kreveld, Overmars
Undergrad
7.0
Computational Geometry
Preparata, Shamos
Graduate
8.5
Discrete and Computational Geometry
Matoušek
Graduate
8.5
Handbook of Discrete and Computational Geometry
Goodman, O’Rourke (eds.)
Graduate
8.5
Algorithms in Combinatorial Geometry
Edelsbrunner
Graduate
8.5
Geometric Folding Algorithms
Demaine, O’Rourke
Research
9.5
Computational Topology: An Introduction
Edelsbrunner, Harer
Graduate
8.5
Delaunay Triangulations and Voronoi Diagrams
advanced monographs
Research
9.5
Euclidean Geometry in Mathematical Olympiads
Evan Chen
Undergrad
7.0
Algebraic Geometry
Robin Hartshorne
Research
10.0
Modern Differential Geometry for Physicists
Chris Isham
Graduate
8.5
10) Combinatorics
Book
Author(s)
Level
Difficulty
A Course in Combinatorics
van Lint, Wilson
Undergrad
7.0
Introductory Combinatorics
Brualdi
Undergrad
7.0
Applied Combinatorics
Tucker
Undergrad
7.0
Enumerative Combinatorics, Vol. 1
Stanley
Graduate
8.5
Enumerative Combinatorics, Vol. 2
Stanley
Research
9.5
Generatingfunctionology
Wilf
Graduate
8.5
The Probabilistic Method
Alon, Spencer
Graduate
8.5
Combinatorial Optimization
Schrijver
Research
9.5
Extremal Combinatorics
Jukna
Research
9.5
Proofs from THE BOOK
Aigner, Ziegler
Undergrad
7.0
Algebraic Combinatorics
Stanley
Research
10.0
A Path to Combinatorics for Undergraduates
Titu Andreescu
Undergrad
7.0
Olympiad Combinatorics
Pranav Sriram
Undergrad
7.0
Combinatorial Optimization
Korte & Vygen
Graduate
8.5
11) Dynamic Programming and Optimization
Book
Author(s)
Level
Difficulty
Introduction to Algorithms
Cormen, Leiserson, Rivest, Stein
Undergrad
7.0
Algorithm Design
Kleinberg, Tardos
Graduate
8.5
Competitive Programming 4
Halim, Halim, Effendy
Undergrad
7.0
Dynamic Programming and Optimal Control
Bertsekas
Graduate
8.5
Combinatorial Optimization
Schrijver
Research
9.5
Combinatorial Optimization: Polyhedra and Efficiency
Schrijver
Research
9.5
Optimization
Bazaraa, Sherali, Shetty
Graduate
8.5
Integer and Combinatorial Optimization
Nemhauser, Wolsey
Graduate
8.5
Convex Optimization
Boyd & Vandenberghe
Graduate
8.5
12) Probability and Randomized Algorithms
Book
Author(s)
Level
Difficulty
A First Course in Probability
Ross
Undergrad
7.0
Probability and Computing
Mitzenmacher, Upfal
Graduate
8.5
Randomized Algorithms
Motwani, Raghavan
Graduate
8.5
The Probabilistic Method
Alon, Spencer
Graduate
8.5
Introduction to Algorithms
Cormen, Leiserson, Rivest, Stein
Undergrad
7.0
The Art of Computer Programming, Vol. 2
Knuth
Graduate
8.5
Fifty Challenging Problems in Probability
Various
Undergrad
7.0
13) Complexity Theory and NP‑Hardness
Book
Author(s)
Level
Difficulty
Introduction to the Theory of Computation
Sipser
Undergrad
7.0
Elements of the Theory of Computation
Lewis, Papadimitriou
Graduate
8.5
Computers and Intractability
Garey, Johnson
Graduate
8.5
Computational Complexity
Papadimitriou
Graduate
8.5
Computational Complexity: A Modern Approach
Arora, Barak
Graduate
8.5
Complexity and Real Computation
Blum, Cucker, Shub, Smale
Research
9.5
The Nature of Computation
Moore, Mertens
Graduate
8.5
14) Approximation Algorithms and Hard Optimization
Book
Author(s)
Level
Difficulty
Approximation Algorithms
Vazirani
Graduate
8.5
The Design of Approximation Algorithms
Williamson, Shmoys
Graduate
8.5
Computers and Intractability
Garey, Johnson
Graduate
8.5
Combinatorial Optimization
Schrijver
Research
9.5
Randomized Algorithms
Motwani, Raghavan
Graduate
8.5
The Probabilistic Method
Alon, Spencer
Graduate
8.5
15) Cryptography and Computational Number Theory
Book
Author(s)
Level
Difficulty
An Introduction to Mathematical Cryptography
Hoffstein, Pipher, Silverman
Undergrad
7.0
Introduction to Cryptography
Katz, Lindell
Undergrad
7.0
Guide to Elliptic Curve Cryptography
Hankerson, Menezes, Vanstone
Graduate
8.5
A Graduate Course in Applied Cryptography
Boneh, Shoup
Graduate
8.5
Handbook of Applied Cryptography
Menezes, van Oorschot, Vanstone
Graduate
8.5
Mathematics of Public Key Cryptography
advanced texts
Graduate
8.5
Elliptic Curves
Silverman
Research
9.5
Prime Numbers: A Computational Perspective
Crandall, Pomerance
Graduate
8.5
16) Automata, Parsing, and Formal Languages
Book
Author(s)
Level
Difficulty
Introduction to Automata Theory, Languages, and Computation
Hopcroft, Motwani, Ullman
Undergrad
7.0
Introduction to the Theory of Computation
Sipser
Undergrad
7.0
Compilers: Principles, Techniques, and Tools
Aho, Lam, Sethi, Ullman
Undergrad
7.0
Parsing Techniques: A Practical Guide
Grune, Jacobs
Graduate
8.5
The Theory of Parsing, Translation, and Compiling
Aho, Ullman
Graduate
8.5
Formal Languages and Their Relation to Automata
Harrison
Graduate
8.5
Introduction to Language Theory and Translation
advanced references
Graduate
8.5
17) Game Theory and Combinatorial Games
Book
Author(s)
Level
Difficulty
A Course in Game Theory
Osborne, Rubinstein
Undergrad
7.0
Game Theory
Fudenberg, Tirole
Graduate
8.5
Algorithmic Game Theory
Nisan, Roughgarden, Tardos, Vazirani
Graduate
8.5
Combinatorial Game Theory
Conway
Graduate
8.5
Winning Ways for Your Mathematical Plays (4 vols.)
Berlekamp, Conway, Guy
Graduate
8.5
On Numbers and Games
Conway
Graduate
8.5
The Theory of Games and Economic Behavior
von Neumann, Morgenstern
Research
9.5
Combinatorial Game Theory
Thomas S. Ferguson
Graduate
8.5
Composite Mathematical Games
Various
Undergrad
6.0
18) Parallel, External‑Memory, and Streaming
Book
Author(s)
Level
Difficulty
Introduction to Parallel Algorithms
JáJá
Graduate
8.5
Designing Efficient Algorithms for Parallel Computers
Quinn
Graduate
8.5
The Design and Analysis of Parallel Algorithms
Leighton
Graduate
8.5
External Memory Algorithms and Data Structures
advanced monographs
Research
9.5
Cache‑Oblivious Algorithms
survey / monographs
Research
9.5
Streaming Algorithms
survey literature
Research
9.5
Algorithm Engineering
advanced references
Graduate
8.5
19) Search, Backtracking, Constraint Solving
Book
Author(s)
Level
Difficulty
Artificial Intelligence: A Modern Approach
Russell, Norvig
Undergrad
7.0
Constraint Processing
Dechter
Graduate
8.5
Handbook of Satisfiability
Biere, Heule, van Maaren, Walsh (eds.)
Research
9.5
The Calculus of Computation
Biere, et al.
Research
9.5
Decision Making and Search
advanced monographs
Graduate
8.5
20) Computational Topology and Advanced Geometry
Book
Author(s)
Level
Difficulty
Computational Topology: An Introduction
Edelsbrunner, Harer
Graduate
8.5
Algebraic Topology
Hatcher
Graduate
8.5
Elements of Algebraic Topology
Munkres
Graduate
8.5
Geometric Folding Algorithms
Demaine, O’Rourke
Research
9.5
Handbook of Discrete and Computational Geometry
Goodman, O’Rourke (eds.)
Graduate
8.5
Computational Geometry
Preparata, Shamos
Graduate
8.5
Persistent Homology
Edelsbrunner & Harer
Research
9.5
21) Research‑Level CP and Theory Stack
Book
Author(s)
Level
Difficulty
The Art of Computer Programming, Vol. 4A
Knuth
Research
9.5
The Art of Computer Programming, Vol. 4B
Knuth
Research
9.5
The Art of Computer Programming, Vol. 4C
Knuth
Research
10.0
The Art of Computer Programming, Vol. 4D+ (fascicles)
Knuth
Research
10.0
Combinatorial Optimization: Polyhedra and Efficiency
Schrijver
Research
9.5
Polynomial Algorithms in Computer Algebra
von zur Gathen, Gerhard
Research
9.5
Modern Computer Algebra
von zur Gathen, Gerhard
Research
9.5
Algebraic Complexity Theory
Bürgisser, Clausen, Shokrollahi
Research
9.5
Extremal Graph Theory
Bollobás
Research
9.5
Algebraic Number Theory
Neukirch
Research
9.5
Computational Commutative Algebra
Kreuzer, Robbiano
Research
9.5
Complexity and Real Computation
Blum, Cucker, Shub, Smale
Research
9.5
Matching Theory
Lovász, Plummer
Research
9.5
Graph Minors series
Robertson, Seymour
Research
9.5
Suffix Trees and Their Applications
advanced lecture notes
Research
9.5
22) Problem‑Solving and Mathematical Thinking
Book
Author(s)
Level
Difficulty
How to Solve It
George Pólya
Undergrad
6.0
The Art and Craft of Problem Solving
Paul Zeitz
Undergrad
7.0
Problem‑Solving Strategies
Arthur Engel
Undergrad
7.0
How to Prove It
Daniel J. Velleman
Undergrad
6.0
Putnam and Beyond
Andreescu et al.
Undergrad
7.0
Problem Books in Mathematics
Various
Undergrad
7.0
23) Analysis and Sequences
Book
Author(s)
Level
Difficulty
Sequences
Halberstam & Roth
Graduate
8.5
Introduction to the Analysis of Algorithms
Sedgewick & Flajolet
Graduate
8.5
Analysis of Algorithms
Jeffrey McConnell
Undergrad
7.0
Practical Analysis of Algorithms
Vrajitoru & Knight
Undergrad
7.0
Analytic Combinatorics
Flajolet & Sedgewick
Research
9.5
Asymptotic Methods in Analysis
de Bruijn
Graduate
8.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.
Monogon’s Codeforces blog — contest analysis and advanced-topic write-ups from a long-time red/LGM-tier competitor.
ali-ibrahim137’s blog — practical engineering side of CP: stress testing, debugging workflow, not just algorithms.
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 (日本語)
kmjp’s competitive programming blog — AtCoder-problem-by-problem solution write-ups, one of the most consistently updated Japanese CP blogs.
けんちょんの競プロ精進日記 (drken) — tutorial-style posts that build up a topic from first principles, widely linked by Japanese competitors.
よすぽの日記 — by the creator of Library Checker; implementation-focused posts on data structures and algorithms.
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.
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.
Maintained 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.
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.
order_of_key(x) — how many elements are less than x
find_by_order(k) — the k-th smallest
Both O(logn). 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
Library
Verdict
KACTL (KTH)
not a compiler library — a curated set of very concise implementations, and the best single thing to read for ICPC preparation
a reference site, not a library; the explanations are the value
Your own template
the 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
STL — thoroughly, including the algorithm header
PBDS — the ordered set, in an afternoon
ACL — read the source of the structures you already understand
KACTL — read for the compression tricks, paste sparingly
After that, further progress comes from algorithms and problem-solving, not from more libraries.
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.
CP Book — companion site for the Competitive Programming books: curated problem lists and topic mappings.
Errichto — IOI gold medalist, the best general CP YouTube channel for thinking process over syntax.
William Lin — former world finalist, advanced math/optimization content.
Petr Mitrichev (YouTube) — video companion to his blog (see Blogs above); deep algorithmic insight from a top competitor.