## ЛКШ 2018, 2-й день, Persistent World (Даниил Николенко)

1. Персистентность, введение

1. Стек
2. Дерево отрезков → дерево отрезков
3. СНМ через персистентный массив (амортизация операций не работает)
4. Общая идея: любая структура состоит из массивов
5. Декартово дерево (treap) с операциями insert, delete
6. Проблема с merge с собой, RBST (treap без y)
7. Offline решение (дерево версий, откаты)

2. Сканирующая прямая и применение персистентности

1. Точка, покрытая максимальным числом прямоугольников
2. Количество пересекающихся вертикальных и горизонтальных отрезков
3. Площадь объединения прямоугольников
4. Сумма в прямоугольнике (а теперь в online за log)
5. Локализация точки в многоуогольнике, в планарном графе (объединяется с персистентностью)
6. Число различных на отрезке (и тоже в online за log)
7. Сколько точек в треугольнике? Стороны треугольника всегда горизонтальная, вертикальная, под 45. В online как обычно работает.
8. Даны 2D-точки, online запрос = полуплоскость с фиксированным углом α, сказать сколько точек в полуплоскости.
9. Scan-ray + persistent : даны n ≤ 1000, 2D-точек, online запрос = полуплоскость, сказать сколько точек в полуплоскости.
10. А если n ≤ 50 000, q ≤ 50 000?

3. k-я порядковая на отрезке за O(logn)
4. Продвинутая персистентность

1. Очередь с минимумом и дек с минимумом за O(1)
2. Убираем амотизацию, получаем персистентную очередь с минимумом за O(1)
3. Что это ещё даёт: избавление от амортизации в векторе (удвоение), в хеш-таблице (только удвоение)