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