|
|
|
|
|
|
ОглавлениеВведение в олимпиадное программирование
Пример олимпиадной задачи
Реализация решения задачи «А+В» на Pascal, C++ и Java
Классификация олимпиадных задач
Целочисленная арифметика
Целые числа и типы, простые числа
Числа Мерсенна. Числа Ферма
Совершенные числа. Дружественные числа
Числа Армстронга. М-самовлюбленные числа
Числа Смита. НОД и НОК
Факториал. Числа Фибоначчи
Алгоритмы с простыми числами
Алгоритмы сортировки
Сортировка выбором (SelectSort)
Сортировка пузырьком (BubbleSort)
Сортировка подсчетом (CountSort)
Пораздрядная сортировка (RadixSort)
Быстрая сортировка (QuickSort)
Сортировка слиянием (MergeSort)
Сортировка массива структур в Visual C++
Куча – структура данных
Реализация функций для работы с кучей
Пирамидальная сортировка (HeapSort)
Задача «Коммерческий калькулятор»
Задача «Трамвай»
Динамическое программирование
Методы восходящего и нисходящего ДП
Задача «Пицца»
Задача «Гвоздики»
Задача «Без двух нулей подряд»
Задача «Зайчик»
Задача «Компьютерная игра»
Задача «Максимальная подпоследовательность»
Задача «Фермер»
Задача «Игра-2»
Задача «Ход конем»
Задача «Симпатичные узоры»
Задача «Игра в монеты»
Задача «Шары и коробки»
Задача «Зоопарк»
Задача «Сумма степеней двойки»
Задача «Китайские часы»
Задача «Трипростые числа»
Задача «Количество путей в лабиринте»
Задача «Космический мусорщик»
Задача «Объединение блоков»
Задача «Лесенка»
Задача «Раз-два, раз-два»
Задача «Фермер-2»
Задача «Фотограф-зануда»
Задача «Счастливые билеты»
Длинная арифметика
Формы хранения, чтение и вывод длинных чисел
Сравнение. Сложение
Вычитание. Умножение длинного на короткое
Деление длинного на короткое. Умножение длинных
Комбинаторика
Размещения. Перестановки
Сочетания. Вычисление сочетаний
Субфакториал. Задача о разбиении числа
Задача «Великий комбинатор»
Задача «Волейбол»
Перестановки
Понятие перестановки. Перебор перестановок в Visual C++
Лексографический перебор перестановок и реализация Next_Permutation в Delphi
Хаотичный перебор перестановок. Перебор перестановок уникальных элементов
Лексографический перебор перестановок с повторяющимися элементами
Вычислительная геометрия
Геометрические объекты. Понятие вектора. Скалярное и векторное произведение векторов
Выражение псевдоскалярного произведения. Полярная система координат
Поворот точки на плоскости. Уравнение прямой на плоскости
Расстояние от точки до прямой. Теорема Пика
Длина объединения отрезков на прямой. Проверка пересечения двух отрезков
Пересечение окружности и прямой. Пересечение двух окружностей
Площадь многоугольника. Принадлежность точки многоугольнику
Методы Джарвиса и Грэхема построения выпуклой оболочки
Теория графов
Понятие графа. Определения и виды графов
Способы представления графа. Матрица весов
Список дуг. Описание Бержа. Список смежности
Поиск в глубину
Реализация поиска в глубину. Определение предка вершины в дереве
Подсчет компонент связности. Поиск цикла в графе. Топологическая сортировка
Задача «Производство деталей»
Задача о шахматном коне. Задача коммивояжера. Правило Варнсдорфа
Поиск в ширину
Задача «Lines – 2»
Задача «Алхимия»
Задача «Лабиринт»
Алгоритм Флойда. Алгоритм Форда-Беллмана. Алгоритм Дейкстры
Минимальный остов. Свойства минимальных остовов
Алгоритм Прима
Алгоритм Крускала
Система непересекающихся множеств
Задача «Минимальный каркас»
STL – Standard Template Library
STL и шаблоны в Visual C++
Пара (pair)
Линейный массив (vector)
Стек (stack)
Очередь (queue)
Дек (deque)
Очередь с приоритетами (priority_queue)
Строка (string)
Множество (set)
Ассоциативный массив (map)
| | | |