Арифметические действия, ввод-вывод целых чисел
Арифметические действия, ввод-вывод чисел с плавающей точкой
Односвязные, двусвязные списки
Алгоритм Евклида (нахождение наибольшего общего делителя)
Разложение числа на простые множители
Быстрое возведение в степень
Системы счисления (перевод из одной в другую)
Число перестановок, сочетаний, размещений
Число сочетаний с повторениями
Числа Каталана - количество правильных скобочных последовательностей заданной длины
Сортировка массива за O(n^2)
Сортировка массива за O(nlog(n))
Поиск элемента в отсортированном массиве методом двоичного поиска
Нахождение максимума выпуклой функции методом тернарного поиска
Длинная арифметика: сложение, вычитание, умножение
Длинная арифметика: деление, извлечение квадратного корня
Представление графа в памяти (матрица смежности, список ребер)
Представление графа в памяти (список смежности)
Обход графа поиском в глубину
Обход графа поиском в ширину
Алгоритм Дейкстры с кучей/сетом
Поиск потока наибольшего размера
Наименьший общий предок двух вершин в дереве за O(log n)
Строки (ввод/вывод, работа с символами)
Поиск наибольшей общей подпоследовательности двух строк
Использование хэш-функции для быстрого сравнения строк
Алгоритм Кнута-Морриса-Пратта
Система непересекающихся множеств
Простейшие задачи динамическое программирования: задача о кузнечике(количество способов допрыгать по числовой прямой от 1 до n пряжками определенных длин), задача о размене рубля.
Динамическое программирование: задача о рюкзаке
Динамическое программирование по профилю
Простейшая геометрия: операции с точками, прямыми, векторами
Пересечение двух отрезков
Нахождение площади многоугольника
Проверка на принадлежность точки многоугольнику (за O(n))
Построение выпуклой оболочки множества точек на плоскости
Разбор выражений (польская нотация)