День 01. Персистентный структуры данных и их применение
 * дерево Фенвика
 * персистентный стек
 * персистентное дерево отрезков
 * k-я на отрезке за O(logN)
День 02. Декартово дерево? Двумерные структуры?
 * персистентное Декартово дерево
 * RBST
День 03. Ахо-Корасик
 * префикс-функция
 * автомат КМП (для одной строки)
 * автомат для нескольких строк
 * построение поиском в ширину
День 04. Суффиксный массив
 * определение
 * построение за O(Nlog²N) без хешей
 * построение за O(NlogN)
 * LCP и алгоритм Касаи
День 05. Суффиксный автомат
 * определение
 * свойства вершины
 * построение
 * линейность (O(N * Σ))
 * линейность (O(N))
День 06. Игры
 * ретроанализ
 * функция Гранди
 * перебор и αβ-отсечение
 * теория Смита: функция Гранди для графов с циклами
День 07. Потоки
 * определение: сеть, поток, разрез, обратное ребро
 * теорема Форда-Фалкерсона (о минимальном разрезе)
 * наивный поиск (алгоритм Форда-Фалкерсона)
 * алгоритм Эдмонса-Карпа (поиск в ширину и O(VE²))
 * масштабирование (O(E²logMax))
 * алгоритм Диница (O(V²E))
 * масштабирование (O(VElogMax))
День 08. Потоки минимальной стоимости
 * критерий минимальности потока (теорема об отрицательных циклах)
 * шаг алгоритма, доказательство корректности (O(VE*k))
 * потенциалы Джонсона (O(V²*k), O(ElogE*k))
 * альтернативные задачи: поток максимальной стоимости, поток фиксированного
   размера минимальной стоимости, поток минимальной стоимости без ограничения
   на размер
День 09. Геометрия
 * пересечение отрезков, прямых, окружностей
 * касательная к окружности, общие касательные к двум
 * выпуклая оболочка за (O(NlogN))
 * пара удалённых точек
 * пара ближайших точек
 * минимальная охватывающая окружность (O(N))
День 10. Быстрое преобразование Фурье
 * сведение умножение чисел к умножению многочленов
 * алгоритм Карацубы
 * идея: переход к другой форме хранения многочленов
 * первообразный корень в комплексных числах и в остатках по модулю
 * прямое БПФ (O(NlogN))
 * обратное БПФ (сведение к прямому)
День 11. Обработка дерева: LCA и прочее
 * двоичные подъёмы (O(NlogN), O(logN))
 * LCA через двоичные подъёмы
 * Эйлеров обход, сведение LCA к RMQ
 * алгоритм Тарьяна: offline-LCA с использованием СНМ
 * четыре русских: LCA и RMQ за (O(N), O(1))
 * запросы на поддеревьях, сведение к запросам на отрезке
 * heavy-light-декомпозиция
День 12. Сбалансированные деревья
 * АВЛ-дерево
 * красно-чёрное дерево
 * 2-3-дерево
 * splay-дерево (без доказательства)