Страница Михаила Медведева
В статье приведены базовые алгоритмы для решения задач на геометрическую тематику. Показано их применение на конкретных примерах.
Описывается алгоритм решения задачи поиска кратчайшего пути из одного источника до остальных вершин графа, именуемый алгоритмом Дейкстры. Рассматривается реализация алгоритма с помощью массивов, STL контейнеров – очереди с приоритетами priority_queue, множества set, а также с использованием операций над кучей push_heap и pop_heap.
Описывается два основных способа организации обработки данных: итеративный и рекурсивный. Рассматривается набор олимпиадных задач, которые решаются при помощи итеративного и рекурсивного подхода.
Описываются числа Фибоначчи, их свойства и методы вычисления. Рассматривается набор олимпиадных задач, которые решаются при помощи чисел Фибоначчи.
Описывается расширенный алгоритм Евклида и рассматриваются его приложения к решению олимпиадных задач. Приводятся алгоритмы решения линейных сравнений и диофантовых уравнений.
Описывается один из классических методов поиска в графе – поиск в глубину. Представлена реализация поиска в глубину на несвязном (ориентированном) графе. Описана техника раскраски вершин и расстановки меток. Представлена классификация ребер. Сформулированы основные свойства путей и ребер. Рассмотрены задачи, связанные с поиском в глубину.
В статье даны определения и свойства наибольшего общего делителя и наименьшего общего кратного, приведены алгоритмы их вычислений. Предложен разбор олимпиадных задач на эту тему.
В статье рассматривается структура данных, которая позволяет находить сумму соседних элементов массива, а также модифицировать их за логарифмическое время. Такую структуру называют сумматором, в статье она реализована при помощи дерева Фенвика.
