# Data Structures Algorithms
All Data Structures Algorithms notes →1 — Divide & Conquer Optimization
Speeding up a DP transition using divide-and-conquer or monotonic-decision-boundary tricks (e.g. the DC optimization, Knuth's optimization).
2 — Convex Hull
Finding the smallest convex polygon enclosing a set of points, via Graham scan or the gift-wrapping algorithm.
3 — Sweep Line
Sweeping a conceptual line across sorted events to solve interval-overlap and geometric intersection problems in O(n log n).
4 — Computational Geometry
Core geometric primitives — orientation, line intersection, point-in-polygon — that geometry problems build on.
5 — String Matching Advanced
Suffix arrays and suffix automata as the next level past KMP/Z-algorithm for heavy string-matching workloads.
6 — FFT
Fast Fourier Transform for O(n log n) polynomial multiplication, the classic application in competitive/advanced algorithm problems.
7 — Matrix Exponentiation
Representing a linear recurrence as matrix multiplication to compute the n-th term in O(log n).
8 — Fast Exponentiation
Binary exponentiation for computing a^n (or a^n mod m) in O(log n) instead of O(n).
9 — Randomized Algorithms
Algorithms that use randomness for expected-case guarantees — randomized QuickSelect, Monte Carlo vs. Las Vegas framing.