Académique Documents
Professionnel Documents
Culture Documents
Math:
I: Number Theory: modular arithmetic, greatest common divisor, Extended Euclidean algorithm, prime numbers, fast
exponential
II: Combinatorics and Probability: nCr, nPr, expected value, inclusion/exclusion, Catalan number, counting
C++:
Data Structures:
II: binary heap, binary search tree, hash table, disjoint-set union-find
III: sparse table, segment tree, lazy propagation, 1-d/2-d binary indexed tree
Graphs:
I: basic concept, graph representation, grid graph, depth first search, flood fill, breadth first search
III: algorithms on tree: application on pre-order/post-order, lowest common ancestor, tree diameter
IV: Graph Connectivity: cut edge, articulation point, bridge-connected component, strongly/weakly connected
component, graph shrinking trick
Dynamic Programming:
II: basic concept, explanation to classical DP problems: Knapsack, Longest Common Sub-sequence, etc.
III: DP optimization tricks: monotone queue, convex hull trick, divide and conquer
String Algorithms:
- trie, hashing, KMP Algorithm, suffix array, suffix tree, Z Algorithm, Manacher’s Algorithm, Aho–Corasick
Algorithm
Greedy Algorithms:
- prefix sum, delta array, sliding windows(two pointers), precomputation, discretization, etc.
Functional Programming:
Computational Geometry:
- concept and implementation on basic computational geometry: point, line, segment, polygon, convex hull,
etc.
Game Theory:
- impartial combinatorial games: Nim game, Sprague-Grundy theorem, sum of games, etc.