День 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-дерево (без доказательства)