Уровень С
1. Линейные структуры данных: Стек, очередь и дек
2. Математика 1: Поиск делителей, факторизация, решето Эратосфена, Алгоритм Евклида, бинарное возведение в степень
3. Сортировки и компараторы
4. Бинарный и тернарный поиск
5. Структуры данных: set, map, multiset, unordered_map, unordered_set
6. Динамическое программирование: кузнечик, черепашка, рюкзак, нвп, ноп, расстояние по Левенштейну
7. Графы. Поиск в ширину и в глубину (BFS, DFS)
8. Сканлайн
9. Метод двух указателей
10. Кратчайшие пути: алгоритм Дейкстры
Уровень C+
1. Сортировки и компараторы, struct
2. Бинарный и тернарный поиск
3. Сканлайн
4. Структуры данных: set, map, multiset, unordered_map, unordered_set, pbds
5. Графы: DFS, BFS, топологическая сортировка, поиск компонент сильной связности, построение конденсации графа, поиск мостов и точек сочленения
6. Кратчайшие пути: алгоритмы Дейкстры, Форда-Беллмана, Левита, Флойда, 1-k BFS
7. Геометрия. Геометрические примитивы
8. Строки. Префикс-функция. Z-функция. Хеширование.
9. Динамическое программирование: рюкзак, нвп, ноп, расстояние по Левенштейну.
10. Динамическое программирование по подотрезкам
11. Дерево отрезков
12. Остовные деревья и СНМ: Алгоритм Прима и Крускала
Уровень B
1. Графы: топологическая сортировка, поиск компонент сильной связности, построение конденсации графа, поиск мостов и точек сочленения
2. Кратчайшие пути: алгоритмы Дейкстры, Форда-Беллмана, Левита, Флойда, 1-k BFS
3. Декартово дерево. Явное и неявное
4. Геометрия. Геометрические примитивы
5. Дерево отрезков. Массовые операции
6. Строки. Префикс-функция. Z-функция. Хеширование
7. Динамическое программирование по подотрезкам, по цифрам, по поддеревьям, по подмножествам
8. Наименьший общий предок. Бинарные подъемы
9. Остовные деревья и СНМ: Алгоритм Прима и Крускала
10. Корневая оптимизация и алгоритм МО
Уровень B+
1. Графы. Поиск мостов и точек сочленения, компоненты двусвязности, конденсация, 2-SAT
2. Дерево отрезков. Массовые операции. Двумерный сканлайн
3. Корневая оптимизация и алгоритм МО
4. Теория игр. Ретроанализ, теория Шпрага-Гранди
5. Динамическое программирование: по подотрезкам, по поддеревьям, по подмножествам, по профилю, по изломанному профилю, матрицы
6. Декартово дерево. Явное и неявное
7. Паросочетания. Алгоритм Куна
8. Суффиксный массив
9. Бор. Битовый бор. Алгоритм Ахо-Корасик
10. Наименьший общий предок. Бинарные подъемы. Разреженные таблицы. Эйлеров обход
11. Геометрия. Многоугольники. Выпуклые оболочки
Уровень A
1. Heavy-light декомпозиция, центроидная декомпозиция
2. Персистентные структуры данных
3. Корневая оптимизация и алгоритм МО. МО на дереве
4. Потоки. Алгоритм Эдмондса-Карпа нахождения максимального потока. Алгоритм Диница нахождения максимального потока
5. Суффиксный массив
6. FFT
7. Бор. Битовый бор. Алгоритм Ахо-Корасик
8. Продвинутая геометрия
9. Оптимизации динамического программирования. Оптимизация через разделяй-и-властвуй. Оптимизация Кнута. Convex Hull Trick. Lambda оптимизация
10. IOI туры
Уровень A+ (Практико-ориентированная параллель)
В центре программы — ежедневные соревновательные туры, соответствующие по сложности региональному и заключительному этапам ВсОШ. Большинство дней отведено под интенсивное решение задач, разбор реальных олимпиадных ситуаций и отработку алгоритмов в контестах. Теоретические блоки сжаты и нацелены на немедленное применение в коде.
Изучаемые темы:
1. Оптимизации ДП — разделяй-и-властвуй, оптимизация Кнута, Convex Hull Trick, λ-оптимизация
2. Линейная алгебра и теория чисел — метод Гаусса, линейная оболочка, XOR-базис
3. Сливаемые структуры данных
4. Персистентные структуры данных
5. Быстрое преобразование Фурье (FFT) — быстрое преобразование по подмножествам (Fast Subset Convolution), многомерное БПФ
6. IOI-туры — разбор и решение задач прошлых лет.
Упор на практику позволяет участникам не только освоить продвинутые техники, но и уверенно чувствовать себя на реальных соревнованиях уровня всеросс и выше.