#P16081. [ICPC 2023 NAC] Who Watches the Watchmen?

[ICPC 2023 NAC] Who Watches the Watchmen?

题目描述

有一些哨兵无人机守卫着一个绝密设施。每个哨兵静止在三维空间中的某个点,并面向某个观察方向。

随着人工智能的最新进展,该设施的所有者逐渐意识到,对设施的最大威胁并非入侵者,而是这些哨兵本身!为了安全起见,他们希望调整哨兵,使得每个哨兵都在观察另一个哨兵,并且每个哨兵恰好被另一个哨兵所观察。

改变一个哨兵的观察方向需要消耗 11 单位能量,而将一个哨兵移动到新位置需要消耗 1,0001{,}000 单位能量。注意,这两种操作是独立的。同时改变一个哨兵的位置和观察方向总共需要消耗 1,0011{,}001 单位能量。移动结束后,任何两个哨兵不能位于同一位置。移动后,哨兵的位置不一定在整数坐标点上。

一个位于 (x,y,z)(x, y, z)、面向方向 (vx,vy,vz)(vx, vy, vz) 的哨兵可以观察到所有形如 (x+tvx,y+tvy,z+tvz)(x + t \cdot vx, y + t \cdot vy, z + t \cdot vz)t0t \ge 0)的点,前提是该点与哨兵之间没有其他哨兵直接遮挡。请问,为了使得每个哨兵恰好被另一个哨兵所观察,所需的最小能量是多少?

输入格式

输入的第一行包含一个整数 nn1n5001 \le n \le 500),表示哨兵的数量。

接下来的 nn 行,每行包含六个整数 xxyyzzvxvxvyvyvzvz,表示一个位于 (x,y,z)(x, y, z)、面向方向 (vx,vy,vz)(vx, vy, vz) 的哨兵。所有数值的范围均为 [106,106][-10^6, 10^6],且 vxvxvyvyvzvz 不全为零。没有两个哨兵位于同一位置。

输出格式

输出一个整数,表示为了使得每个哨兵恰好被另一个哨兵所观察,所需的最小能量。如果不可能实现,则输出 1-1

4
66 45 10 73 39 36
95 14 26 47 84 59
14 66 89 89 36 78
16 27 94 79 24 24
4

提示

翻译由 DeepSeek V3.2 完成