Параллель X |
Параллели B, B', C |
Для кого? |
Примеры тем
Поиск потоков в сетях: метод Форда-Фалкерсона, алгоритмы Эдмондса-Карпа, Диница, поиск максимальных потоков минимальной стоимости.
Быстрое преобразование Фурье его друзья: умножение и деление многочленов и длинных чисел, свертка Уолша-Адамара, ... Продвинутые строковые структуры данных: суффиксное дерево, суффиксный автомат. Сливаемые кучи: левацкая, косая, Фибоначчи. Splay-дерево, link-cut tree. Нетривиальные алгоритмы на графах: венгерский алгоритм, алгоритм двух китайцев, дерево доминаторов, ... |
Для кого? |
Примеры тем
Поиск минимальных остовных деревьев, система непересекающихся множеств.
DFS: поиск компонент сильной связности, вершинной и реберной двусвязностей, нахождение мостов и точек сочленения, поиск паросочетаний. Структуры данных: дерево отрезков с отложенными операциями, декартовы деревья по явному и неявному ключам, heavy-light decomposition, centroid decomposition, дерево Фенвика, персистентные структуры данных. SQRT-декомпозиция: на массивах и запросах, алгоритм Мо и его модификации. Динамическое программирование: НВП за O(n log n), метод Хиршберга, ДП на подмножествах/профилю. Оптимизации ДП: convex hull trick, оптимизации Кнута, “разделяй-и-властвуй”, lambda-оптимизация. Геометрия: выпуклые оболочки, поиск касательных к многоугольникам, сумма Минковского, метод сканирующей прямой. Строки: алгоритм Ахо-Корасик, суффиксный массив. |
Для кого? |
Примеры тем
Деревья: поиск диаметра, центра и центроида, LCA.
Структуры данных: префиксные суммы/разности, разреженные таблицы, деревья отрезков, технология отложенных операций, основы SQRT-декомпозиции, дерево Фенвика. Строки: префикс-функция, z-функция, строковые хэши, бор, алгоритм Ахо-Корасик. DFS: топологическая сортировка, поиск эйлерова пути/цикла, поиск компонент сильной связности, мостов, точек сочленения, компонент вершинной и реберной двусвязности. Работа с STL: sort, unique, lower_bound/upper_bound, set/map и методы работы с ними и т.п. Геометрия: векторы, скалярное/векторное произведение, поиск пересечения прямых/отрезков/окружностей, поиск касательных к окружностям, проверка принадлежности точки многоугольнику, выпуклые оболочки, касательные к многоугольникам, метод сканирующей прямой. Динамическое программирование: на подотрезках, на поддеревьях, по подмножествам/профилю, поиск порядкового номера объекта (перестановки, сочетания, ПСП)/объекта по номеру, поиск НВП за O(n log n). |
Для кого? |
Примеры тем
Бинарный поиск и его модификации.
Базовые структуры данных: стеки, очереди, деки, двоичная куча. Решение задач. Сортировки: выбором, вставками, пузырьком, слиянием, кучей, быстрая. Поиск К-ой порядковой статистики. Графы: методы хранения графов в памяти. Поиск кратчайших путей в графе: BFS, 0-1-BFS, [A-2A]-BFS, алгоритмы Дейкстры, Флойда, Форда-Беллмана. Введение в динамическое программирование: одномерное, двумерное. Задачи о рюкзаке, НВП, НОП. Деревья: Деревья: поиск диаметра, центра и центроида, LCA. Динамическое программирование на деревьях. Поиск порядкового номера объекта (перестановки, сочетания, ПСП)/объекта по номеру. Геометрия: векторы, скалярное/векторное произведение, поиск пересечения прямых/отрезков/окружностей, поиск касательных к окружностям, проверка принадлежности точки многоугольнику. Строки: префикс-функция, z-функция, строковые хэши. |