1. Foundations & Contest Skills
(Stuff that makes you fast and sane in contests)
- Competitive programming overview
- Programming contests formats & rules
- Contest strategy & practice tips
- Problem-solving mindset
- Reading problem statements efficiently
- Debugging under time pressure
- Using online judges (CSES, Codeforces, etc.)
2. Programming Language & Implementation Skills
(Mostly language-agnostic, often C++-focused)
- Input & output optimization
- Fast I/O techniques
- Working with integers & floating-point numbers
- Overflow & precision issues
- Shortening code (macros, typedefs, templates)
- Iterators & ranges
- Compiler optimizations
- Understanding generated assembly (optional but elite)
4. Time & Space Complexity
(Core survival knowledge)
- Time complexity rules
- Complexity classes
- Big-O / Big-Π/ Big-Ω
- Estimating efficiency
- Lower bounds
- Amortized analysis
5. Sorting & Searching
Sorting
- Sorting theory
- Bubble sort
- Merge sort
- Counting sort
- Comparison-based lower bounds
- Practical sorting tricks
Searching
- Binary search
- Binary search on answers
- Ternary search
- Searching optimal solutions
6. Data Structures
6.1 Basic Structures
- Arrays
- Dynamic arrays (vectors)
- Deques
- Stacks & queues
6.2 Ordered Structures
- Sets & multisets
- Maps
- Priority queues
- Policy-based data structures
6.3 Range Query Structures
- Prefix sums
- Binary Indexed Trees (Fenwick Trees)
- Segment Trees
- Lazy propagation
- Dynamic segment trees
- 2D segment trees
6.4 Advanced / Custom Structures
- Treaps
- Union-Find (Disjoint Set Union)
- Data structures inside nodes
- Merging data structures
8. Greedy Algorithms
- When greedy works / fails
- Coin problems
- Scheduling
- Tasks & deadlines
- Minimizing sums
- Data compression
7. Complete Search & Backtracking
- Generating subsets
- Generating permutations
- Recursive algorithms
- Backtracking
- Pruning search trees
- Heuristic pruning
- Meet in the middle
9. Dynamic Programming
Core DP Concepts
- Optimal substructure
- Overlapping subproblems
- Counting vs optimizing
- State design & transitions
Classic Problems
- Maximum subarray sum
- Coin problems
- Longest increasing subsequence
- Grid paths
- Knapsack problems
- Edit distance
- Counting tilings
Advanced DP
- DP over subsets
- DP on permutations
- DP on trees
- DP optimizations:
- Convex Hull Trick
- Divide & Conquer optimization
- Knuthâs optimization
14. String Algorithms
Basic
- String terminology
- Trie structures
- DP on strings
Hashing
- Polynomial hashing
- Collision handling
- Applications
Pattern Matching
- Z-algorithm
- Prefix functions
- Suffix arrays
- LCP arrays
- Suffix automata
- Regular languages
- Pattern matching automata
10. Bit Manipulation & Bitmasking
- Bit representation
- Bit operations
- Bit optimizations
- Representing sets with bitmasks
- Bit-parallel algorithms
- Hamming distance
- Subset DP with bitmasks
11. Graph Algorithms
11.1 Graph Basics
- Graph terminology
- Adjacency lists & matrices
11.2 Graph Traversal
- Depth-first search (DFS)
- Breadth-first search (BFS)
- DFS trees
11.3 Shortest Paths
- BellmanâFord
- Dijkstra
- FloydâWarshall
11.4 Directed Graphs
- Topological sorting
- DAG dynamic programming
- Successor graphs
- Cycle detection
11.5 Connectivity
- Strongly connected components
- Kosarajuâs algorithm
- 2SAT problem
- Biconnectivity
11.6 Trees
- Tree traversal
- Tree diameters
- All longest paths
- Binary trees
- Tree queries
- Lowest common ancestor
- Subtrees & paths
- Offline tree algorithms
11.7 Spanning Trees
- Minimum spanning trees
- Kruskalâs algorithm
- Primâs algorithm
- Union-Find structure
11.8 Paths & Circuits
- Eulerian paths
- Hamiltonian paths
- De Bruijn sequences
- Knightâs tours
11.9 Flow Algorithms
- FordâFulkerson
- Maximum flow
- Minimum cut
- Disjoint paths
- Maximum matchings
- Path covers
- Minimum cost flow
12. Range Query Techniques
- Static array queries
- Prefix sums
- RMQ
- Offline queries
- Parallel binary search
- Dynamic connectivity
3. Mathematics for Competitive Programming
3.1 Number Theory
- Primes & factorization
- Sieve of Eratosthenes
- GCD & Euclidâs algorithm
- Modular arithmetic
- Modular exponentiation
- Eulerâs theorem
- Solving linear & modular equations
3.2 Combinatorics
- Binomial coefficients
- Catalan numbers
- Inclusionâexclusion principle
- Burnsideâs lemma
- Cayleyâs formula
- Counting permutations & subsets
3.3 Probability
- Events & probability calculations
- Random variables
- Expected values
- Markov chains
- Randomized algorithms
3.4 Linear Algebra & Matrices
- Matrix operations
- Linear recurrences
- Matrix exponentiation
- Gaussian elimination
- Graphs represented as matrices
3.5 Game Theory
- Game states
- Nim game
- SpragueâGrundy theorem
3.6 Fourier Transform
- Polynomial multiplication
- FFT algorithm
- Convolution
13. Geometry
Core Geometry
- Complex numbers
- Points & vectors
- Lines & segments
- Distance functions
- Polygon area
Advanced Geometry
- Sweep line algorithms
- Intersection detection
- Closest pair of points
- Convex hull
15. Advanced Techniques & Miscellaneous
- Two pointers method
- Sliding window minimum
- Nearest smaller elements
- Square root decomposition
- Moâs algorithm
- Integer partitions
- Parallel binary search
- Dynamic trees
- Dynamic connectivity