Как устроен
динамика
Статьи
GRA
Алгоритм
Алгоритм Беллмана — Форда
Кратчайшие пути с отрицательными рёбрами и поиск отрицательного цикла: V раундов по всем рёбрам.
O(V · E)
2 задачи
GRA
Алгоритм
Алгоритм Флойда — Уоршелла
Кратчайшие пути между всеми парами вершин за O(n³): динамика по разрешённым пересадкам.
O(n³)
2 задачи
GRA
Алгоритм
Эйлеров путь
Пройти каждое ребро ровно раз: правило нечётных вершин и алгоритм Хирхольцера за O(E).
O(V + E)
3 задачи
STR
Алгоритм
Редакционное расстояние
Наименьшее число вставок, удалений и замен между двумя строками — таблица m × n и выравнивание по ней.
O(m · n)
2 задачи
STR
Алгоритм
Diff Майерса
Кратчайший сценарий удалений и вставок строк за O((N + M) · D): волны по числу правок. Так работает git diff.
O((N + M) · D)
1 задача
DP
Приём
Динамическое программирование
Сводим задачу к подзадачам, решаем каждую один раз и храним ответы в таблице.
состояния × переходы
2 задачи
DP
Алгоритм
Задача о рюкзаке
Лучший набор вещей под ограничение по весу: таблица n × W и путь по ней назад.
O(n·W)
3 задачи
DP
Алгоритм
Наибольшая возрастающая подпоследовательность
Самая длинная растущая цепочка элементов в исходном порядке: пасьянс и двоичный поиск за n log n.
O(n log n)
2 задачи
DP
Алгоритм
Наибольшая общая подпоследовательность
Самая длинная цепочка, общая двум последовательностям: таблица m × n, путь назад, Хиршберг.
O(m · n)
2 задачи
DP
Приём
Динамика на отрезках
Состояние — отрезок [i, j], переход — где его разрезать: дерево поиска, порядок умножения матриц, распил.
O(n³)
2 задачи
DP
Приём
Динамика на деревьях
Ответ поддерева — из ответов детей: проход от листьев к корню, а для всех корней сразу — перерасчёт с корня.
O(n)
2 задачи
DP
Приём
Динамика по маскам
Состояние — подмножество, записанное битами числа: точный коммивояжёр, назначения, раскладки по профилю.
O(2ⁿ · n²) для коммивояжёра
2 задачи
DP
Приём
Динамика по цифрам
Счастливые билеты в любом диапазоне за проход по цифрам: 55 252 из миллиона и любой из 10¹⁸ — за миллисекунду.
O(D · 10 · S)
2 задачи
DP
Приём
Convex hull trick
Минимум прямых вместо перебора: 1776 тестов каталога по запускам песочницы — и квадратичная динамика становится линейной.
O(n)
2 задачи
DP
Приём
Оптимизации Кнута и «разделяй и властвуй»
45 тысяч городов на карте по классам населения: 3,5 млн вычислений вместо пяти миллиардов — потому что лучший разрез монотонен.
O(k · n log n)
2 задачи
DP
Алгоритм
Seam carving
Сужает фото, вырезая пиксельные швы наименьшей энергии; каждый шов — динамика по таблице.
O(W·H) на шов, O(k·W·H) на k швов
2 задачи
DP
Алгоритм
Алгоритм Витерби
Самая правдоподобная цепочка скрытых состояний по шумным наблюдениям: улицы по GPS, участки генома, сообщение по битам.
O(T · S²)
2 задачи
DP
Алгоритм
Выравнивание последовательностей
Лучшее сопоставление двух последовательностей с очками за замены и пропуски: целиком, по кускам и с проверкой на случайность.
O(m · n)
2 задачи
DP
Алгоритм
Красивый перенос строк
Жадный перенос против всего абзаца сразу: кратчайший путь по местам разрыва, как в TeX.
O(n·L)
2 задачи
NUM
Алгоритм
Матрицы и рекуррентности
Степень матрицы: пути длины k в графе, линейные рекуррентности, матрица переноса и цепи Маркова.
O(m³ log k) для A^k размера m × m
2 задачи
TEC
Приём
Мемоизация
Запомнить ответ функции для каждого набора аргументов, чтобы не считать его заново: экспонента превращается в многочлен.
O(число разных аргументов × работа на один вызов)
2 задачи
Задачи
Аэропорты открываются
Заказы для курьера
Курс без откатов
Маршруты без шагов назад
Не больше k обменов
Охрана выставки
Ошибки секвенатора
Распил бревна
Самый дешёвый шов
Сколько семестров
Текст без пробелов
Участки G и C
Без сдачи
Два частотных словаря
Кому какой заказ
Коробки-матрёшки
Лавина повторов
Лифт без четвёрок
Место для подписи
Нечестная тасовка
Общий кусок
Один бесплатный проезд
Проекты для района
Пропуски одним куском
Ровный правый край
Самая далёкая страница
Самый короткий круг
Скобки на калькуляторе
Сообщение через шум
Счастливые в диапазоне
Три редакции
Туда на восток, обратно на запад
Хвост суммы кубиков
Шов через пиксель
Вечера чтения
Грузовой лифт
Дни экзаменов
Пачки тестов
Рулон кабеля
Сколько раскрасок
Слить соседние
Снегоуборщик
Часто рядом
классика 17 олимпиады 13 собеседования 8 матрица 8 биоинформатика 7 оптимизация 7 кратчайший путь 6 граф 5 жадность 5 карты и навигация 4 сравнение версий 4 в проде 4