База, которая необходима для понимания лекции
- Геометрия
- Пересечение двух прямых
- Пересечение двух отрезков
- Площадь треугольника
- Площадь многоугольника
- Ориентация многоугольника
- Разбиение прямой точек на три множества (срава, слева, лежащие на)
- Численные методы.
- Двоичный поиск. Корень многочлена нечетной степени.
- Троичный поиск. Локальный минимум любой функции за O(logN).
- Принцип работы: Точки A, B, C образуют невыпуклость, берем точки X, Y, делаем один из трех переходов.
- Задача: timus : 1256 (Про "посетить" 2 окружности)
- Не работает? Разобьем на 100 более маленьких кусков, на каждом троичный поиск.
Алгоритмы работы с выпуклыми многоугольниками
- Пересечения.
- Пересечение многоугольника прямой за O(N).
- Пересечение двух выпуклых многоугольников за O(N2).
- Разбиения.
- Разбиение прямой на 2 равные по площади части за O(N).
- Разбиение прямой на 2 равные по периметру части за O(N).
- Разбиение прямой на 2 равные по периметру части минимальной по длине хордой (троичный поиск)
- Разбиение прямой на 2 равные по площади и по периметру части за O(NlogMax).
- Разбиение двумя перпендикулярными прямыми на 4 равные части.
- logN
- Нахождение точки, экстремальной по направлению, за O(logN).
- Нахождение точек пересечения с прямой за O(logN).
- Построение общих касательных за O(logN).
- Проверка - внутри, или снаружи лежит данная точка за O(logN).
- logN Hard.
- Нахождение расстояния до многоугольника за O(logN). Передний фронт.
- Невозможность решать задачу "max расстояние".
- Хранение многоугольника в декартовом дереве. Пересечение прямой за O(log2N).
- Оптимизация предыдущей идеи до O(logN). Бинпоиск по массиву = Find в дереве поиска.
- Метод двух указателей.
- Построение общей касательной для двух многоугольников за O(N);
- Нахождение ближайшей точки за O(N).
- Нахождение двух самых дальних точек в множестве за O(N).