P16081 [ICPC 2023 NAC] Who Watches the Watchmen?
题目描述
有一些哨兵无人机守卫着一个绝密设施。每个哨兵静止在三维空间中的某个点,并面向某个观察方向。
随着人工智能的最新进展,该设施的所有者逐渐意识到,对设施的最大威胁并非入侵者,而是这些哨兵本身!为了安全起见,他们希望调整哨兵,使得每个哨兵都在观察另一个哨兵,并且每个哨兵恰好被另一个哨兵所观察。
改变一个哨兵的观察方向需要消耗 $1$ 单位能量,而将一个哨兵移动到新位置需要消耗 $1{,}000$ 单位能量。注意,这两种操作是独立的。同时改变一个哨兵的位置和观察方向总共需要消耗 $1{,}001$ 单位能量。移动结束后,任何两个哨兵不能位于同一位置。移动后,哨兵的位置不一定在整数坐标点上。
一个位于 $(x, y, z)$、面向方向 $(vx, vy, vz)$ 的哨兵可以观察到所有形如 $(x + t \cdot vx, y + t \cdot vy, z + t \cdot vz)$($t \ge 0$)的点,前提是该点与哨兵之间没有其他哨兵直接遮挡。请问,为了使得每个哨兵恰好被另一个哨兵所观察,所需的最小能量是多少?
输入格式
输入的第一行包含一个整数 $n$($1 \le n \le 500$),表示哨兵的数量。
接下来的 $n$ 行,每行包含六个整数 $x$、$y$、$z$、$vx$、$vy$、$vz$,表示一个位于 $(x, y, z)$、面向方向 $(vx, vy, vz)$ 的哨兵。所有数值的范围均为 $[-10^6, 10^6]$,且 $vx$、$vy$、$vz$ 不全为零。没有两个哨兵位于同一位置。
输出格式
输出一个整数,表示为了使得每个哨兵恰好被另一个哨兵所观察,所需的最小能量。如果不可能实现,则输出 $-1$。
说明/提示
翻译由 DeepSeek V3.2 完成