Learning resources
I want to read various resources on the Internet and compare them. The goal is to know what to recommend to people, e.g. what is the best blog about segment trees.
Binary search¶
- https://leetcode.com/explore/learn/card/binary-search/ (this is not perfect, TODO: finding something better)
Segment trees¶
- https://codeforces.com/blog/entry/18051 (but no drawings and code hard to read)
Gaussian elimination¶
- https://en.wikipedia.org/wiki/Gaussian_elimination (example explained)
- https://cp-algorithms.com/linear_algebra/linear-system-gauss.html (programming, precision, modulo 2 version)
- https://codeforces.com/blog/entry/68953 (detailed explanation on algebra behind bitwise Gaussian Elimination)
Math for CP¶
- https://codeforces.com/blog/entry/77137 (youtube tutorial series)
General advice for authors¶
- Drawings
- Starting from the most basic examples and versions
- Don’t start with “this topic is easy”
- Try to make code easy to understand instead of one-liners
- Upload images to the website (e.g. to CF) instead of other hosts
Things I want to check out¶
- https://comscigate.com/Books/contests/icpc.pdf, The Hitchhiker’s Guide
- Competitive Programming 3, not free!
Categories¶
- Implementation; vectors and sets
- Binary search
- Prime sieve; prime check in O(sqrt(N))
- Dynamic Programming - Fibonacci numbers, prefix sums
- Sorting
- Greedy
- Ad-hoc
- Graphs - graph representation, BFS, DFS, trees
- Geometry - distance between two points
- Bitmasks
- Two pointers, sliding window
- Data structures - sqrt decomposition, segment trees, Fenwick/BIT, persistent structures, Policy-Based-DS, treaps, BST
- Ternary search
- Interactive problems
- LIS
- LCS
- Maths
- Number theory
- Combinatorics, probability, EV
- Find & Union
- Game theory - NIM, Grundy
- Hashing
- Strings - KMP, Z
- Geometry - cross product, convex hull
- Matrix exponentiation
- Divide & Conquer
- DP optimizations
- Graphs - Dijkstra, FW, SCC, bridges, matching, flows
- Randomized algorithms
- TRIE
- Trees - bottom-up dp, LCA, Centroid decomposition, HLD, DSU
- 2-SAT
- Strings - suffix arrays
- Constructive algorithms
- Expression parsing
- Meet in the middle
- FFT
- Chinese remainder theorem
- Gaussian elimination
- Difference array, binary lifting
Solutions for CSES DP problems: https://codeforces.com/blog/entry/70018#comment-545687