1 条题解

  • 0
    @ 2026-7-4 18:03:17

    三维参考物体最近邻选择 题解

    核心思路

    先读入所有物体,并用编号找到参考物体坐标。随后遍历除参考物体外的所有物体,计算相对参考物体的平方距离 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
    上传者