Подразделы

Другие разделы

Дата и время

29/04/2024 18:14:18

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printРазбор задачи G. Ограда от пингвинов

Для каждой вершины ограды `T_j` определяем возможные вершины для проведения ребер многоугольника, находя среди самую крайнюю точку среди внутренних вершин за `O(K)` следующим способом:
`Z=P_1`
для всех `i` от 2 до `K`
  если `(T_j,Z)\ times\ (T_j,P_i)\ >\ 0` то `Z=P_i`
(где `(a,b)\ times\ (a,c)` означает векторное произведение)
Достижимыми из `T_j` будут вершины `T_i` для которых `(T_j,Z)\ times\ (T_j,T_i)\ >\ 0`
Данная проверка может быть выполнена без потери точности с помощью целочисленной арифметики.
Расстояния `R_{i\ j}` между достижимыми вершинами `i` и `j` (где `i\ <\ j`) нужно поместить в матрицу `D` и применить алгоритм Флойда-Уоршелла, чтобы найти кратчайшие расстояния между всеми парами вершин `i\ <\ j`.
Затем нужно найти `min_{i<j,\ i\ ""достижима""\ ""из""\ j}\ R_(j\ i)+D_(i\ j)\ `.
Время работы алгоритма `O(N^3+N*(K+N))`
loading