These notes assume the base routine is already familiar and focus on the first real structural upgrades.
Binary Search on Answer, Mo's Algorithm, Offline Queries, Sqrt Decomposition
These topics are the part of competitive programming that is hardest to compress into one sentence but easiest to recognize after enough practice.
Offline reordering, amortized arguments, and techniques that show up when standard tools are almost enough.
This category is for techniques that are not a single data structure or a single graph routine, but still recur often enough that they deserve a stable write-up.
Mo's algorithm, offline reordering, sqrt decomposition, amortized arguments, and parametric search all live here for the same reason: once the pattern is visible, many problems stop feeling ad hoc.
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 notes assume the base routine is already familiar and focus on the first real structural upgrades.
Binary Search on Answer, Mo's Algorithm, Offline Queries, Sqrt Decomposition
These are the notes where proofs, reductions, or implementation details become the main bottleneck.
Parallel Binary Search, Small-to-Large Merging, Bitset Optimization
These are the finished note pages in this category, each with rendered TeX, C++ code, references, and practice suggestions.
Turn optimization into repeated feasibility checks by designing a monotone predicate over the answer space.
Answer many monotone offline queries at once by testing them in batches at shared midpoints.
Offline range-query ordering that trades sorting plus add/remove operations for fast answers on static arrays.
Reorder queries so that one sweep or one monotone data-structure state can answer them more cheaply than online processing.
Amortize repeated subtree merges by always moving the smaller container into the larger one.
Split the array into blocks so point updates and range queries become simple block-level work instead of full rescans.
Use machine-word parallelism to update or compare dozens of boolean states with one operation.
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.
Turn optimization into repeated feasibility checks by designing a monotone predicate over the answer space.
Answer many monotone offline queries at once by testing them in batches at shared midpoints.
Offline range-query ordering that trades sorting plus add/remove operations for fast answers on static arrays.
Reorder queries so that one sweep or one monotone data-structure state can answer them more cheaply than online processing.
Amortize repeated subtree merges by always moving the smaller container into the larger one.
Split the array into blocks so point updates and range queries become simple block-level work instead of full rescans.
Use machine-word parallelism to update or compare dozens of boolean states with one operation.
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.