1 条题解
-
0
三维参考物体最近邻选择 题解
核心思路
先读入所有物体,并用编号找到参考物体坐标。随后遍历除参考物体外的所有物体,计算相对参考物体的平方距离
dx*dx + dy*dy + dz*dz。维护当前最优二元组:
(平方距离, 物体编号)按照这个二元组升序比较即可同时完成“距离最小”和“距离相同取编号更小”的规则。最终对最优平方距离开平方,输出 6 位小数。
正确性说明
算法枚举了所有可选物体,因此不会漏掉最近物体。比较键的第一项是平方距离,而平方函数在非负距离上单调递增,所以平方距离最小等价于真实欧氏距离最小。比较键的第二项是物体编号,因此当距离相同时会选择编号更小者,正好符合题意。安全标记只由最终选中物体的距离和
d_safe决定,距离不超过阈值时输出NEAR,否则输出NORMAL。复杂度
时间复杂度:
O(N)。空间复杂度:
O(N),用于保存输入物体和按编号查找参考物体。常见错误
- 把三维距离写成二维距离,漏掉
z坐标。 - 距离相同却按输入顺序打破并列,而不是按编号更小者。
- 把距离等于
d_safe的情况误判为NORMAL。
- 把三维距离写成二维距离,漏掉
- 1
信息
- ID
- 725
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 6
- 已通过
- 2
- 上传者