На чём держится
дерево
Статьи
SRT
Алгоритм
Пирамидальная сортировка
Куча прямо в массиве: n log n в худшем случае без лишней памяти — страховка introsort и сортировка ядра Linux.
O(n log n)
2 задачи
DS
Структура данных
Верёвка
Текст кусками в листьях дерева: вставка и удаление в середине — путь к листу и один кусок; номер строки — по счётчикам в узлах.
O(log n + C) на вставку, удаление, доступ
1 задача
DS
Структура данных
Двоичная куча
Минимум под рукой, добавление и извлечение за O(log n): дерево в массиве, на котором живут календари событий.
O(log n)
2 задачи
DS
Структура данных
Двоичное дерево поиска
Меньшие налево, большие направо: поиск, порядок и k-й элемент за высоту дерева — от log n до n.
O(h): от O(log n) до O(n)
2 задачи
DS
Структура данных
АВЛ-дерево
Дерево поиска, где высоты веток у узла различаются не больше чем на 1: высота до ~1,44·log₂ n.
O(log n) на поиск, вставку и удаление
2 задачи
DS
Структура данных
Красно-чёрное дерево
Дерево поиска с узлами двух цветов: высота до 2·log₂(n + 1), не больше трёх поворотов на операцию.
O(log n) на поиск, вставку и удаление
2 задачи
DS
Структура данных
Декартово дерево
Ключ и случайный приоритет: глубина O(log n) в среднем, split и merge, массив с разворотом куска за O(log n).
O(log n) в среднем на поиск, вставку, удаление, split и merge
1 задача
DS
Структура данных
B-дерево
Дерево с сотнями ключей в узле-странице: поиск среди миллиарда ключей читает пять страниц.
O(log n) сравнений, O(log_B n) чтений страниц
2 задачи
DS
Структура данных
Бор (префиксное дерево)
Слова с общим началом идут общим путём: поиск слова и всех продолжений — за длину запроса.
O(L) на вставку и поиск слова длины L
2 задачи
DS
Структура данных
Система непересекающихся множеств
Слить два множества и узнать, в одном ли элементы, — почти за O(1): лес ссылок на родителя и два приёма.
O(α(n))
2 задачи
DS
Структура данных
Дерево отрезков
Минимум, максимум и сумма на любом отрезке с изменениями на ходу: оба действия за O(log n).
O(log n) на запрос и на изменение
2 задачи
GRA
Алгоритм
Наименьший общий предок
Общий предок двух вершин дерева: двоичный подъём за O(log n), обход Эйлера за O(1), Тарьян офлайн.
O(log n) на запрос
2 задачи
GRA
Алгоритм
Тяжёлые пути
Запросы на путях дерева: тяжёлые пути режут любой путь на O(log n) отрезков массива под деревом отрезков.
O(log² n) на запрос
1 задача
GRA
Алгоритм
Центроидная декомпозиция
Делим дерево центроидами: log₂ n уровней, и ближайшая отмеченная вершина — за O(log n) после каждой отметки.
O(log n) на отметку и на вопрос
1 задача
STR
Структура данных
BK-дерево
Все пароли в одной-двух правках от данного: неравенство треугольника отрезает целые ветви — и где оно перестаёт помогать.
O(N · глубина) на построение
1 задача
STR
Алгоритм
Код Хаффмана
Оптимальный префиксный код по частотам знаков: два самых редких дерева склеиваются, пока не останется одно.
O(n log n)
2 задачи
DP
Приём
Динамика на деревьях
Ответ поддерева — из ответов детей: проход от листьев к корню, а для всех корней сразу — перерасчёт с корня.
O(n)
2 задачи
GEO
Структура данных
k-d дерево
Двоичное дерево, которое делит пространство по осям по очереди: ближайшая точка — за десятки шагов вместо перебора.
O(n log n) построение; O(log n) на запрос в среднем
1 задача
GEO
Структура данных
R-дерево
Окно карты 10° × 5°: из 58 987 отрезков берега R-дерево проверяет 847 прямоугольников. И находит город, дальше всех от моря.
окно — число открытых узлов × M; ближайший — обычно O(log n) узлов
1 задача
SYS
Структура данных
Дерево Меркла
Хеши хешей: отпечаток всего набора, поиск расхождений за несколько сравнений и доказательство из log n хешей.
O(n) на построение, O(log n) на доказательство и его проверку
2 задачи
ML
Алгоритм
Решающее дерево
Отвечает цепочкой вопросов «признак ≤ порог?»; каждый вопрос выбран так, чтобы неопределённость упала сильнее всего.
O(h · F · n log n) построение; O(h) ответ
2 задачи
Задачи
Лучший первый вопрос
Охрана выставки
Повороты на конвейере
Проверка раскраски
Сверка реплик
Этажи индекса
Ближайшие города
Водопад загрузки
Где может лежать k-й
Дальность дрона
Два перепутанных ключа
Дерево по Джини
Квадродерево снимка
Общая папка
Проверка доказательства
Разрез по меридиану
Расшифровка по длинам кодов
Самая далёкая страница
Самый длинный пролёт
Сколько страниц у индекса
Соседи пароля
Что попало в окно
Экскурсия по дереву жизни
Блуждание по папкам
Все версии текста
Высота без дерева
Загрузка по порядку
Описанный родственник
Паводок
Сколько раскрасок
Часто рядом
классика 14 собеседования 10 запросы на отрезке 8 наука и физика 7 в проде 6 дерево поиска 6 поиск 6 олимпиады 6 куча 4 массив 4 операционные системы 4 базы данных 4