Что решает
запросы на отрезке
Статьи
DS
Приём
Корневая декомпозиция
Блоки по √n: целые отвечают сразу, разрезанные — поклеточно; O(√n) там, где дерево отрезков не складывается. И порядок Мо.
O(√n) на запрос; Мо — O(n√q) на все
1 задача
DS
Структура данных
Персистентные структуры
Каждое изменение — новая версия, старые живы; копируется только путь от корня. Медиана любого периода — разность двух версий.
O(log n) на изменение и запрос
1 задача
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(log n).
O(log n) на запрос и на изменение
2 задачи
DS
Структура данных
Дерево Фенвика
Суммы на префиксе с изменениями за O(log n) в одном массиве: блоки длиной в младшую единицу номера.
O(log n) на сумму префикса и на изменение
2 задачи
DS
Структура данных
Разреженная таблица
Минимум любого отрезка за O(1) после O(n log n) подготовки: два перекрывающихся блока длиной 2^k.
O(1) на запрос, O(n log n) на построение
2 задачи
GRA
Алгоритм
Тяжёлые пути
Запросы на путях дерева: тяжёлые пути режут любой путь на O(log n) отрезков массива под деревом отрезков.
O(log² n) на запрос
1 задача
GEO
Структура данных
R-дерево
Окно карты 10° × 5°: из 58 987 отрезков берега R-дерево проверяет 847 прямоугольников. И находит город, дальше всех от моря.
окно — число открытых узлов × M; ближайший — обычно O(log n) узлов
1 задача
TEC
Приём
Префиксные суммы
Сумма любого отрезка за O(1) после одного прохода; двумерный вариант считает сумму любого прямоугольника картинки.
O(n) на построение, O(1) на запрос
2 задачи
TEC
Приём
Сжатие координат
Значения до миллиарда заменить их номерами по порядку — и строить массивы и деревья по номерам.
O(n log n) на сжатие
2 задачи
Задачи
Часто рядом
классика 10 олимпиады 9 дерево 8 дерево поиска 5 поиск 5 собеседования 5 массив 5 базы данных 4 геоданные 4 наука и физика 4 офлайн-запросы 2 разделяй и властвуй 2