These are the shortest on-ramp notes in this category and the ones most likely to be usable immediately in contest practice.
Knapsack
The focus here is less on memorizing formulas and more on seeing what information must survive from one decision to the next.
State design, transitions, and the optimizations that make large DP feasible.
Dynamic programming is easier to revise when each note is centered on state design and transition shape instead of one famous problem. That is the organizing principle here.
For each topic I want to answer:
what the state means,
why the transition is complete,
what lets the state count stay under control,
which optimization becomes legal once the recurrence has the right monotonicity or convexity.
The labels are not cosmetic. They are there to signal the amount of prerequisite structure and implementation fragility you should expect before opening the note.
These are the shortest on-ramp notes in this category and the ones most likely to be usable immediately in contest practice.
Knapsack
These notes assume the base routine is already familiar and focus on the first real structural upgrades.
Bitmask DP, Digit DP, Tree DP
These are the notes where proofs, reductions, or implementation details become the main bottleneck.
Monotone Queue Optimization, Divide and Conquer DP Optimization, Knuth Optimization, Convex Hull Trick, SOS DP, Rerooting DP, Aliens Trick / Lagrangian Relaxation
These are the finished note pages in this category, each with rendered TeX, C++ code, references, and practice suggestions.
The standard capacity-based DP pattern, with the loop directions and state choices that distinguish 0/1 from unbounded use.
Dynamic programming over subsets when the state is a small visited set, partition, or compatibility frontier.
A position-by-position DP over the decimal expansion of an upper bound, with tight and leading-zero states.
Exploit the parent-child structure of trees so each state only has to summarize one rooted subtree at a time.
Speed up DP transitions over a sliding range by keeping only the best candidates in a deque.
Speed up row-by-row transition minimization when the optimal split point moves monotonically.
Speed up interval DP from O(n^3) to O(n^2) when the optimal split points move monotonically.
A deque-based lower hull for DP recurrences with monotone slopes and monotone queries.
Transform subset-based values so every mask can aggregate information from all of its submasks or supermasks efficiently.
Compute a tree answer for every possible root by combining one downward DP pass with one upward transfer pass.
Replace a hard limit on the number of chosen groups with a penalty and binary search that penalty.
The default order follows each note's dependency weight: early notes establish primitives, later notes reuse them or assume the same invariants without re-explaining them.
The standard capacity-based DP pattern, with the loop directions and state choices that distinguish 0/1 from unbounded use.
Dynamic programming over subsets when the state is a small visited set, partition, or compatibility frontier.
A position-by-position DP over the decimal expansion of an upper bound, with tight and leading-zero states.
Exploit the parent-child structure of trees so each state only has to summarize one rooted subtree at a time.
Speed up DP transitions over a sliding range by keeping only the best candidates in a deque.
Speed up row-by-row transition minimization when the optimal split point moves monotonically.
Speed up interval DP from O(n^3) to O(n^2) when the optimal split points move monotonically.
A deque-based lower hull for DP recurrences with monotone slopes and monotone queries.
Transform subset-based values so every mask can aggregate information from all of its submasks or supermasks efficiently.
Compute a tree answer for every possible root by combining one downward DP pass with one upward transfer pass.
Replace a hard limit on the number of chosen groups with a penalty and binary search that penalty.
These are still intentionally shown as planned or outline topics rather than shallow filler. The branch should feel incomplete in honest places instead of fake-complete everywhere.
Raw files are still available here when you want the original TeX, C++, or statement assets.