СНМ
- Храним color[i] и list[color], size[color]
- Перекрашиваем список меньшей длины. Суммарная время работы join-ов = NlogN.
- Обобщение этой идеи: Add → Merge
- Лес
- Меньшее к большему
- Сжатие путей
- Док-во оценки O(log*N)
Hash-Таблицы
- Открытая адресация [Add, Find]
- Списки [Add, Del, Find]
- Удвоение при переполнении
- Оценка вероятности того, что длина списка будет хотя бы K.
Сбалансированные деревья
- Несбаллансированное дерево
- Малые вращения, большие вращения
- Splay-дерево
- Необычное дерево (перебаллансировка когда size[v] = 2k)
- Сбаллансированное дерево умеет все, что умеет дерево отрезков.
Двумерные Структуры данных - часть 1
- Дерево отрезков + ScanLine = решение задачи сумма в прямоугольнике в Offline
- Дерево отрезков, в каждой вершине отсортированный массив = решение задачи сколько чисел на отрезке [i..j] имеет значение от [x..y]
- Прерыдущая задача эквивалентна "числу точек в прямоугольнике"
- Дерево отрезков декартовых деревьев
Persistent
- Persistent Tree
- Массив = Дерево отрезков
- Весь мир = массивы
- Garbage Collector = подсчет ссылок
Задачи на пройденные структуры данных
- Структура, умеющая делать Add, Del, Find и ListAll
- Задача про максимальное ребро за O(E)
- структура, которая умеет делать Add, Find, Del, GetRandomItem
Бор и Сжатый бор
- Бор строк. Суффиксное дерево строк. Определения.
- Хранения бора. Массив, список, хэш-таблица.
- Решение задачи про подстроки за O(N2)
- Решение задачи про поиск словарных слов в тексте за O(E*Len).
- Сжатый бор. Сжатое суффиксное дерево. Память = O(NE), где N - число строк, E - размер алфавита.
- У сжатого бора необычная малая константа. Решение задачи про подстроки для Len = 20 000.