Professional Documents
Culture Documents
1.Programming Techniques
Input and Output
Working with Numbers
Shortening Code
Recursive Algorithms (Subsets, Permutations)
Backtracking (examples)
Bit Manipulation&Bit Operations
Representing Sets
4.Data Structures
Dynamic Arrays
Vectors
Iterators and Ranges
Other Structures
Set Structures
Sets and Multisets
Maps
Priority Queues
Policy-Based Sets
Set Versus Sorting
Map Versus Array
Priority Queue Versus Multiset
5.Dynamic Programming
Basic Concepts
Finding an Optimal Solution
Counting Solutions
Examples
Longest Increasing Subsequence
Paths in a Grid
Knapsack Problems
From Permutations to Subsets
Counting Tilings
6.Graph Algorithms
Basics of Graphs
Graph Terminology
Graph Representation
Graph Traversal
Depth-First Search
Breadth-First Search
Applications
Shortest Path
Bellman–Ford Algorithm
Dijkstra’s Algorithm
Floyd–Warshall Algorithm
Directed Acyclic Graphs
Topological Sorting
Dynamic Programming
Successor Graphs
Finding Successors
Cycle Detection
Minimum Spanning Trees
Kruskal’s Algorithm
Union-Find Structure
Prim’s Algorithm
8.Range Queries
Queries on Static Arrays
Sum Queries
Minimum Queries
Tree Structures
Binary Indexed Trees
Segment Trees
Additional Techniques
9.Tree Algorithms
Basic Techniques
Tree Traversal
Calculating Diameters
All Longest Paths
Tree Queries
Finding Ancestors
Subtrees and Paths
Lowest Common Ancestors
Merging Data Structures
Advanced Techniques
Centroid Decomposition
Heavy-Light Decomposition
10.Mathematics
Number Theory
Primes and Factors
Sieve of Eratosthenes
Euclid’s Algorithm
Modular Exponentiation
Euler’s Theorem
Solving Equations
Combinatorics
Binomial Coefficients
Catalan Numbers
Inclusion-Exclusion
Burnside’s Lemma
Cayley’s Formula
Matrices
Matrix Operations
Linear Recurrences
Graphs and Matrices
Gaussian Elimination
Probability
Working with Events
Random Variables
Markov Chains
Randomized Algorithms
Game Theory
Game States
Nim Game
Sprague–Grundy Theorem
12.Geometry
Geometric Techniques
Complex Numbers
Points and Lines
Polygon Area
Distance Functions
Sweep Line Algorithms
Intersection Points
Closest Pair Problem
Convex Hull Problem
13.String Algorithms
Basic Topics
Trie Structure
Dynamic Programming
String Hashing
Polynomial Hashing
Applications
Collisions and Parameters
Z-Algorithm
Constructing the Z-Array
Applications
Suffix Arrays
Prefix Doubling Method
Finding Patterns
LCP Arrays
14.Additional Topics
Square Root Techniques
Data Structures
Subalgorithms
Integer Partitions
Mo’s Algorithm
Segment Trees Revisited
Lazy Propagation
Dynamic Trees
Data Structures in Nodes
Two-Dimensional Trees
Treaps
Splitting and Merging
Implementation
Additional Techniques
Dynamic Programming Optimization
Convex Hull Trick
Divide and Conquer Optimization
Knuth’s Optimization
Miscellaneous
Meet in the Middle
Counting Subsets
Parallel Binary Search
Dynamic Connectivity