下面给出暴力解法,思路很直接:枚举所有无人机两两组合,计算欧式距离,取最小值。
#code-switcher
import math
在一场大型活动的夜空表演中,多架无人机会按照预先设计的图案组成灯光阵列。为确保飞行安全,需要知道所有无人机之间的最小距离。假设每架无人机的位置用固定平面坐标 (x,y) 表示。系统将读取全部坐标,并计算任意两架无人机之间的最小欧几里得距离。
对于平面上任意两点 (x1,y1) 和 (x2,y2),其欧几里得距离定义为:
d=(x1−x2)2+(y1−y2)2
最终结果只保留该最小距离的整数部分,即直接去掉小数部分,不进行四舍五入。如果无人机数量只有 1 架,则不存在两两之间的安全距离,此时应输出 -1。
约束条件:无人机数量 n 满足 0<n≤50000;所有坐标 x,y 均为整数,且满足 0≤x,y≤100000。
输入共有 n+1 行。第一行包含一个整数 n,表示无人机数量。接下来的 n 行中,每行包含两个以空格分隔的整数 x 和 y,表示一架无人机的平面坐标。
输出一个整数。如果无人机数量为 1,输出 -1;否则输出所有无人机两两之间欧氏距离的最小值的整数部分,小数位直接舍弃,不进行四舍五入。
输入
1
5 7
输出
-1
说明
输入中只有 1 架无人机,坐标为 (5,7)。题目规定无人机数量为 1 时不存在两两之间的安全距离,因此直接输出 -1。
输入
3
10 20
10 20
30 40
输出
0
说明
第 1 架和第 2 架无人机的坐标都为 (10,20),它们之间的距离为 0。所有两两距离中的最小值就是 0,因此最小距离的整数部分也为 0。
输入
4
0 0
1 1
10 10
7 3
输出
1
说明
共有 4 架无人机。逐对计算距离平方:
1。其中最小距离平方为 2,对应距离 2 的整数部分为 1,所以输出 1。
输入
3
0 0
3 4
6 8
输出
5
说明
共有 3 架无人机。点 (0,0) 与 (3,4) 的距离平方为 32+42=25,距离为 25=5,整数部分为 5。
点 (0,0) 与 (6,8) 的距离平方为 62+82=100,距离为 100=10,整数部分为 10。
点 (3,4) 与 (6,8) 的距离平方为 32+42=25,距离为 25=5。
因此所有两两距离中的最小值为 5,输出 5。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册