На чём держится
матрица
Статьи
DS
Приём
Монотонный стек
Стек с упорядоченными значениями: ближайший больший элемент и наибольший прямоугольник за O(n).
O(n)
2 задачи
GRA
Приём
Как хранить граф
Матрица, списки, массив рёбер и CSR: память, скорость и какие вопросы каждая запись задаёт дёшево.
соседи вершины: O(n) у матрицы, O(deg) у списков и CSR; есть ли ребро: O(1) у матрицы, O(deg) у списков
2 задачи
GRA
Алгоритм
Алгоритм Флойда — Уоршелла
Кратчайшие пути между всеми парами вершин за O(n³): динамика по разрешённым пересадкам.
O(n³)
2 задачи
GRA
Алгоритм
Венгерский алгоритм
Кому какую работу при наименьшей общей цене: потенциалы, честные пары и увеличивающие пути за O(n³).
O(n³)
2 задачи
GRA
Алгоритм
PageRank
Важность страниц по ссылкам: случайный читатель, степенной метод и коэффициент затухания.
O((V + E) · log(1/ε) / log(1/d))
1 задача
STR
Алгоритм
Редакционное расстояние
Наименьшее число вставок, удалений и замен между двумя строками — таблица m × n и выравнивание по ней.
O(m · n)
2 задачи
DP
Алгоритм
Задача о рюкзаке
Лучший набор вещей под ограничение по весу: таблица n × W и путь по ней назад.
O(n·W)
3 задачи
DP
Алгоритм
Наибольшая общая подпоследовательность
Самая длинная цепочка, общая двум последовательностям: таблица m × n, путь назад, Хиршберг.
O(m · n)
2 задачи
DP
Приём
Динамика на отрезках
Состояние — отрезок [i, j], переход — где его разрезать: дерево поиска, порядок умножения матриц, распил.
O(n³)
2 задачи
DP
Алгоритм
Seam carving
Сужает фото, вырезая пиксельные швы наименьшей энергии; каждый шов — динамика по таблице.
O(W·H) на шов, O(k·W·H) на k швов
2 задачи
DP
Алгоритм
Выравнивание последовательностей
Лучшее сопоставление двух последовательностей с очками за замены и пропуски: целиком, по кускам и с проверкой на случайность.
O(m · n)
2 задачи
NUM
Алгоритм
Китайская теорема об остатках
Число по остаткам от нескольких модулей: алгоритм Гарнера и точные вычисления по многим простым.
O(k²) операций с машинными числами
2 задачи
NUM
Алгоритм
Матрицы и рекуррентности
Степень матрицы: пути длины k в графе, линейные рекуррентности, матрица переноса и цепи Маркова.
O(m³ log k) для A^k размера m × m
2 задачи
NUM
Алгоритм
Метод Гаусса
Линейная система исключением: ведущий элемент, LU, обусловленность, разреженные матрицы и заполнение.
O(n³): около n³/3 умножений на прямой ход
2 задачи
ML
Алгоритм
Линейная регрессия
Подбирает коэффициенты модели так, чтобы сумма квадратов промахов по данным была наименьшей.
O(n·d² + d³)
2 задачи
ML
Алгоритм
Метод главных компонент
Находит направления наибольшего разброса данных и описывает каждую точку немногими числами вдоль них.
O(n·d² + d³)
2 задачи
ML
Алгоритм
Рекомендации через разложение матрицы
Тысяча книг, четыре тысячи читателей и десять чисел на каждого. Отметьте, что вам нравится, — и посмотрите, что предложит разложение матрицы.
раунд ALS — O(N·k² + (u + i)·k³)
1 задача
RND
Приём
Лас-Вегас и Монте-Карло
Всегда верный, но иногда долгий против всегда быстрого, но иногда неверного — и как превратить одно в другое.
O(k · стоимость одной попытки)
2 задачи
TEC
Приём
Префиксные суммы
Сумма любого отрезка за O(1) после одного прохода; двумерный вариант считает сумму любого прямоугольника картинки.
O(n) на построение, O(1) на запрос
2 задачи
TEC
Приём
Данные, удобные кэшу
Тот же алгоритм, другой порядок обращений к памяти: обход блоками, запас в строках и раскладка по полям.
O-большое то же
1 задача
Задачи
Аэропорты открываются
Ошибки секвенатора
Проверка за сервером
Самый дешёвый шов
Сопротивление цепи
Тёмные острова
Фибоначчи по модулю
Векторы вкуса
Все остовные деревья
Все производные сети
ДНК без участка рестрикции
Курьеры и заказы
Место для подписи
Неявный шаг сквозь стену
Общий кусок
Погасить все лампочки
Пол с колонной
Промахи кэша
Пропуски одним куском
Самый короткий круг
Сжать климат до k чисел
Три редакции
Цепочки рейсов
Шов через пиксель
Часто рядом
классика 17 собеседования 10 динамика 8 линейная алгебра 7 наука и физика 6 олимпиады 6 граф 6 массив 4 изображения 4 в проде 4 биоинформатика 4 оценка 3