№1: Основы C++
Переменные, ввод-вывод, арифметические операции. Условия. Циклы
Все ссылки и материалы курса
Переменные, ввод-вывод, арифметические операции. Условия. Циклы
Циклы. Динамические массивы
Объявление и вызов функций, передача аргументов по значению, ссылке и указателю, возвращаемые значения
Оценка сложности алгоритмов, квадратичные сортировки
Рекурсия, сортировка слиянием, быстрая сортировка, сортировка подсчётом
Стандартный двоичный поиск, бинарный поиск по ответу, вещественный бинарный поиск. Поиск минимума выпуклой функции методом дихотомии
Модель памяти, указатели и разыменование, ссылки, стек и очередь
Выделение и освобождение памяти (new/delete), классы и структуры, односвязные и двусвязные списки
Лямбда-функции, пользовательские компараторы, метод сканирующей прямой (sweep line)
Представление графов в памяти, алгоритм обхода в глубину (DFS), время входа и выхода
Компоненты связности, поиск цикла в ориентированном графе, классификация рёбер, проверка двудольности, топологическая сортировка
Алгоритм обхода в ширину (BFS), кратчайшие пути в невзвешенном графе, восстановление пути
Поиск мостов, точек сочленения, конденсация
Кратчайшие пути от одной вершины в графе с неотрицательными весами, реализации за O(n²) и O(m log n), восстановление пути
Кратчайшие пути между всеми парами вершин за O(n³), кратчайшие пути при отрицательных весах, обнаружение циклов отрицательного веса
Лемма о безопасном ребре, жадная стратегия построения MST, алгоритм Прима за O(n²) и O(m log n)
Двоичная куча, хранение в массиве, sift_up и sift_down, построение кучи за O(n), priority_queue в STL
Поиск, вставка и удаление в BST, обходы дерева (inorder = сортированный порядок), сбалансированные деревья, std::set и std::map