Что решает
расписание
Статьи
DS
Структура данных
Стек и очередь
Стек: последним пришёл — первым ушёл. Очередь: первым пришёл — первым ушёл. Каждая операция — O(1).
O(1) на push и pop, enqueue и dequeue
2 задачи
DS
Структура данных
Двоичная куча
Минимум под рукой, добавление и извлечение за O(log n): дерево в массиве, на котором живут календари событий.
O(log n)
2 задачи
GRA
Алгоритм
Топологическая сортировка
Выстраивает вершины графа без циклов так, чтобы все рёбра смотрели вперёд, за O(V + E).
O(V + E)
2 задачи
GRA
Алгоритм
2-SAT
Условия «a или b»: граф следствий, компоненты сильной связности и ответ за O(n + m); на настоящих нотах.
O(n + m)
1 задача
GRA
Алгоритм
Раскраска графа
Соседям — разные цвета: жадный способ, порядок «наименьший последним», DSatur и точный перебор на картах и расписаниях.
O(V + E) — жадно в данном порядке и «наименьший последним»; O((V + E) log V) — DSatur с кучей
2 задачи
GRA
Алгоритм
Паросочетания в двудольном графе
Наибольшее число пар в двудольном графе: Кун, Хопкрофт — Карп, теоремы Кёнига и Холла.
O(E √V)
2 задачи
DP
Приём
Convex hull trick
Минимум прямых вместо перебора: 1776 тестов каталога по запускам песочницы — и квадратичная динамика становится линейной.
O(n)
2 задачи
PAR
Приём
Жадные алгоритмы
Лучший шаг сейчас без оглядки назад: когда это оптимально, когда почти, и как это доказать.
обычно O(n log n): сортировка или куча
2 задачи
SYS
Приём
Повтор с джиттером
Пауза перед повтором растёт вдвое и выбирается случайно: клиенты расходятся во времени и не бьют по серверу волнами.
O(1) на решение о паузе
2 задачи
SYS
Алгоритм
Планирование задач
Порядок работы: короткие сначала, сроки, прерывания, много ядер и аномалии Грэма.
O(n log n): сортировка или куча
2 задачи
TEC
Приём
Отсечения
Не открывать ветки, где заведомо нет ответа лучше: рекорд, порядок, симметрия, оценки снизу.
O(kⁿ) в худшем случае
2 задачи
Задачи
Часто рядом
классика 9 собеседования 6 олимпиады 5 граф 4 компиляторы 3 куча 3 в проде 3 жадность 3 оптимизация 3 очередь 2 массив 2 операционные системы 2