День 1. Геометрия.2D.advanced
- Метод двух указателей
- Две самые дальние точки на плоскости за O(n)
- Расстояние между выпулкыми непересекающимися многоугольниками за O(n)
- Общая касательная к многоугольникам за O(n)
- Прямая, разделяющая многоугольники за O(n)
- Сумма Минковского за O(n)
- Поиск расстояния между выпуклыми многоугольниками + проверки их пересечения через сумму Минковского.
- Выпуклая оболочка
- QuickHull --- алгоритм, работающий в среднем за O(n) и за O(nlogM) в худшем
- Мелкман --- выпуклая оболочка многоугольника за O(n)
- Пересечение
- Простое пересечение выпуклых многоугольников за O(n2)
- Пересечение выпуклых многоугольников за O(n)
- Пересечение n полуплоскостей за O(nlogn) (сортировка + стэк)
- Задача линейного программирования в 2D за O(n) (нашли одну точку в пересечении полуплоскостей)
- Пересечение и объединение невыпуклых многоугольников за O(n3)
- Пересечение и объединение кругов за O(n3)
- Планарный граф
- Построение планарного графа, задающего пересечение невыпуклых многоугольников
- Пересечение и объединение многоугольников и кругов за O(n2logn)
- Разбиение планарного графа на грани за O(n)
- Теорема Эйлера. Задача про количество частей плоскости.
- Алгоритм A* (модификация Дейкстры)
- Сортировка по углу
- Нахождение диагоналей невыпуклого многоугольника за O(n2logn)
- Задача "провести точку на плоскости, обходя выпуклые многоугольные препятствия" за O(n2logn)
- Задача "провести треугольник" (Лоцман с тимуса). Сумма Минковского.