Семинар 9. Дерево отрезков

Суббота, 24 ноября 2018
НГУ, ауд. 2128, НГУ, новый корпус
Список тем / 24 записи
    1.
    Лекция 1. Сложность и модели вычислений
    2.
    1. Вводное занятие
    3.
    Лекция 2. Сортировки
    4.
    2. Разное
    5.
    Лекция 3. Кучи (начало)
    6.
    3. Динамическое программирование
    7.
    Лекция 4. Кучи (продолжение)
    8.
    Семинар 4. Динамическое программирование
    9.
    Лекция 5. Порядковые статистики
    10.
    Семинар 5. Тестирование
    11.
    Лекция 6. Хеширование
    12.
    Семинар 6. Быстрое преобразование Фурье
    13.
    Лекция 7. Деревья поиска
    14.
    Семинар 7. Хеширование, итераторы
    15.
    Лекция 8. Деревья поиска: продолжение
    16.
    Семинар 8. Метод заметающей прямой
    17.
    Лекция 9. Задачи RMQ и LCA
    18.
    Семинар 9. Дерево отрезков
    19.
    Лекция 10. Система непересекающихся множеств
    20.
    Семинар 10. Разное
    21.
    Лекция 11. Структуры данных для геометрического поиска
    22.
    Семинар 11. Дерево поиска с неявным ключом
    23.
    Лекция 12. Задача о динамической связности в ненаправленном графе
    24.
    Семинар 12. Параллельные алгоритмы

Описание

Интерфейс искомой структуры данных. Решение методом sqrt-декомпозиции за O(sqrt(N)).

Дерево отрезков. Структура дерева. Использование нумерации кучи (если N = 2^p). Хранение в узлах частичных ответов. Рекурсивные и итеративные алгоритмы Set и Query. Время работы. Модификации на отрезке. Хранение в узлах отложенных модификаций. Актуализация вершин в рекурсивном обходе = опускание модификации. Реализуемость произвольного набора запросов и модификаций на отрезке: требования. Примеры: {+=, *=, min(a)}, {+=, sum(a*(a-1)/2)} -> {+=, sum(a), sum(a^2)}, {+=, #(a=0)} -> {+=, min(a), #(a=min)}.