- DSA cheatsheet: covering all concepts with code snippets and example problems: amzn.to/46sxgIx
- USACO guide: Complete guide with 6 levels (general, bronze, silver, gold, platinum, advanced): USACO guide
- DAILY43 book: Walks through 43 core easy problems to build foundation: amzn.to/41LBjNA
- One "easy tagged" problem from Leetcode a day for 2 weeks: leetcode.com/problemset/
- Algorithm Gym from Codeforces (core Graph concepts): https://codeforces.com/blog/entry/16221
- 0-1 BFS: https://codeforces.com/blog/entry/22276
- DFS Tree: https://codeforces.com/blog/entry/68138
- Euler tour: https://codeforces.com/blog/entry/18369
- Articulation points: https://codeforces.com/blog/entry/71146
- Centroid Decomposition: https://codeforces.com/blog/entry/73707
- 2 SAT: https://codeforces.com/blog/entry/16205
- Rerooting / Tree DP: https://codeforces.com/blog/entry/76150
- Sum over Subsets (SOS) DP: https://codeforces.com/blog/entry/45223
- Overview of DP techniques: https://codeforces.com/blog/entry/43256
- Tree DP: https://codeforces.com/blog/entry/20935
- Divide and Conquer DP: https://cp-algorithms.com/dynamic_programming/divide-and-conquer-dp.html
- Knuth's optimization / Knuth-Yao Speedup: https://cp-algorithms.com/dynamic_programming/knuth-optimization.html
- Convex Hull: https://codeforces.com/blog/entry/63823
- Digit DP: https://codeforces.com/blog/entry/53960
Notable examples:
- PtzCamp in Russia
Must read:
- The average height of binary trees and other simple trees: https://algo.inria.fr/flajolet/Publications/FlOd82height.pdf
- Loglog Counting of Large Cardinalities: https://algo.inria.fr/flajolet/Publications/DuFl03-LNCS.pdf
- An exact analysis of stable allocation: https://arxiv.org/pdf/math/9503235
- Probabilistic counting algorithms for data base applications: https://algo.inria.fr/flajolet/Publications/src/FlMa85.pdf
- A Trivial Algorithm Whose Analysis Isn't: https://apps.dtic.mil/sti/tr/pdf/ADA040486.pdf
- HyperLogLog: https://dmtcs.episciences.org/3545/pdf
- The pairing heap: A new form of self-adjusting heap: https://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf
- Shortest paths in Euclidean graphs: https://web.archive.org/web/20150513055530id_/http://www.computer.org:80/csdl/proceedings/focs/1984/0591/00/0715943.pdf
- Deterministic skip lists: https://ic.unicamp.br/~celio/peer2peer/skip-net-graph/deterministic-skip-lists-munro.pdf
- Fast Algorithms for Sorting and Searching Strings: http://webhotel4.ruc.dk/~keld/teaching/algoritmedesign_f08/Artikler/04/Bentley99.pdf
- Resizable arrays in optimal time and space: https://www.diva-portal.org/smash/get/diva2:1000012/FULLTEXT01.pdf
- Analysis of QuickSelect: https://www.numdam.org/article/ITA_1995__29_4_255_0.pdf
- Fibonacci heaps and their uses in improved network optimization algorithms: https://dl.acm.org/doi/pdf/10.1145/28869.28874
- A data structure for dynamic trees: https://dl.acm.org/doi/pdf/10.1145/800076.802464
- Philippe Flajolet
- Donald E. Knuth
- Robert Tarjan
- Ronald L. Rivest
- Robert Sedgewick
- Jeff Erickson
- Erik Demaine
- David Eppstein