anthology-of-algorithms-and-data-structures
anthology-of-algorithms-and-data-structures copied to clipboard
Common Code for Competitive Programming in C++
Contents
1. data structures
- union find disjoint sets
-
segment tree
- range minimum query
- merge sort tree
- fenwick tree
-
sparse table
- range min/max query
- range sum query
-
sorting
- merge sort
- selection sort
- bubble sort
2. problem solving paradigms
3. mathematics
-
combinatorics
-
fibonacci numbers
- pisano periodic sequence
-
fibonacci numbers
-
number theory
-
prime generation
- simple sieve of eratosthenes
- wheel sieve
- segmented sieve
- linear sieve
-
integer factorization
- extended wheel factorization
- least prime factorization
- extended euclid: solving linear diophantine equation
-
modified sieve
- euler phi
- mobius
-
primality tests
- miller-rabin test
-
functions involving prime factors
- euler totient function
- mobius function
- phi factorial
-
prime generation
- probability theory
- game theory
- cycle finding
- big integer class
-
ad-hoc mathematics problems
-
stable matching
- the stable marriage problem
-
stable matching
4. graph theory
-
graph traversal
- depth first search
- breadth first search
-
finding articulation points and bridges
- articulation points and bridges
- bi-connected components
-
finding strongly connected components
- tarjan
- directed cyclic graph into dag
-
topological sort
- topological sort
- kahn's algorithm
-
applications
- connected components
- flood fill
- bi-partite graph check
- edge classification
- adjacency list
- cycle detection (directed graph)
- cycle detection (undirected graph)
- minimum vertex cover
-
minimum spanning tree (mst)
-
kruskal's algorithm
- kruskal
- prim's algorithm
-
kruskal's algorithm
-
single_source shortest paths (sssp)
-
unweighted graph
- single source shortest path
- single source shortest path on grids
- shortest cycle
- restoring the path
-
weighted graph
- dijkstra on sparse graphs
- dijkstra on dense graphs
- dijkstra on grids
- dijkstra on -ve weight edges
-
special case (0-1 bfs)
- single pair shortest path
- single pair shortest path on grids
-
graph with negative weight cycle
- bellman_ford's algorithm
- shortest path faster algorithm (spfa)
-
unweighted graph
-
all pairs shortest paths (apsp)
- floyd_warshall's algorithm
-
special graphs
- directed acyclic graph (dag)
-
tree
- tree diameter
-
lowest common ancestor (lca)
- lca (eulerian tour and rmq)
- kth ancestor and lca (binary lifting)
-
eulerian graph
- eulerian tour of tree
- bipartite graph
- network flow
5. string processing
- trie
- knuth morris pratt algorithm (kmp)
- rabin karp
- manacher
6. geometry
- types
- convex hull
7. more advanced topics
-
advanced search techniques
- informed search: a star algorithm
-
range queries
- mo's algorithm
- square root decomposition
8. rare topics
9. miscellaneous
- pseudo random number generator
- stress test
- fast input/output
- modular calculations
- double comparison
- overloaded operators << and >> to accept an 128bit integer (i/o)
- policy based data structures
- contest template - c++
- my debugging tools
- binary gcd & lcm