Учебник
Разборы алгоритмов: как приём устроен, когда он уместен и на чём с ним ошибаются. Читается отдельно от курсов.
То, без чего не обойтись ни в одной теме: как оценить решение до того, как оно написано.
От квадратичных до n log n, от подсчёта до порядковых статистик — и что из этого уже есть в стандартной библиотеке.
Бинарный поиск как дисциплина инварианта: по массиву, по ответу, по вещественному числу — и всё, что из него вырастает.
Приёмы, которые заменяют перебор пар одним проходом: префиксные суммы, два указателя, стек и очередь с минимумом.
Брать выгодное сейчас — и понимать, когда это приводит к верному ответу, а когда к правдоподобному вранью.
Делимость, простые числа, разложение на множители и арифметика по модулю.
Стек вызовов, ленивая динамика и генерация комбинаторных объектов — от перестановок до скобочных последовательностей.
Контейнеры стандартной библиотеки, итераторы и места, где язык ведёт себя не так, как ожидается.
Хранение, обход в глубину и всё, что из него растёт: компоненты, двудольность, циклы, топсорт, сильная связность, мосты. Дальше — кратчайшие пути: Дейкстра, Флойд, графы состояний.
Векторы, два произведения и всё, что из них следует: прямые, отрезки, расстояния и пересечения.
Отрезок как пара событий: покрытие, объединение, вложенность, дуги на окружности и переход на плоскость.
Полиномиальное хеширование строк, хеши подстрок, коллизии и взломы, хеши множеств и деревьев.
Бордеры и префикс-функция, поиск подстроки, автомат, z-функция и бор. Точные алгоритмы там, где хешей мало.
Времена входа и выхода, наименьший общий предок пятью способами, функции на пути и sparse table.
Лемма о безопасном ребре и три алгоритма из неё. Система непересекающихся множеств и приём «меньшее к большему».
Порядок пересчёта задаёт структура: обход дерева, топологическая сортировка или возрастание маски.