这道题的正解是 分治求最近点对,但是我们用朴素解法 枚举所有点对 也能在考试时拿到一定的分数。
题意是:给定平面上 n 个点,求任意两点欧氏距离平方 (x1−x2)2+(y1−y2)2 的最小值。
朴素做法:
某城市正在多个地点部署信号塔,每个信号塔的覆盖区域在二维平面上都是一个圆。给定所有信号塔的平面坐标,需要考察任意两个信号塔之间的相互距离。对于任意两个信号塔 (x1,y1) 和 (x2,y2),它们之间距离的平方定义为 (x1−x2)2+(y1−y2)2。请你求出所有信号塔两两之间距离平方中的最小值。
约束条件:
第一行包含一个整数 n,表示信号塔的数量。
接下来 n 行,每行包含两个整数 x 和 y,以空格分隔,表示一个信号塔的坐标。
输出一个整数,表示所有信号塔两两之间距离平方的最小值。
输入
2
-1 -2
3 4
输出
52
说明
共有 2 个信号塔,坐标分别为 (-1,-2) 和 (3,4)。
它们之间的距离平方为 (−1−3)2+(−2−4)2=(−4)2+(−6)2=16+36=52,因此最小值为 52。
输入
3
0 0
1 1
2 2
输出
2
说明
共有 3 个信号塔。
所有两两距离平方分别为:
(0,0) 与 (1,1):(0−1)2+(0−1)2=2
(0,0) 与 (2,2):(0−2)2+(0−2)2=8
(1,1) 与 (2,2):(1−2)2+(1−2)2=2
其中最小的是 2,所以输出 2。
输入
4
0 0
1 0
0 1
-2 -2
输出
1
说明
共有 4 个信号塔。
最小的距离平方来自 (0,0) 与 (1,0),为 (0−1)2+(0−0)2=1;同样,(0,0) 与 (0,1) 的距离平方也是 (0−0)2+(0−1)2=1。
其余点对的距离平方均不小于 1,例如 (1,0) 与 (0,1) 的距离平方为 (1−0)2+(0−1)2=2,(0,0) 与 (-2,-2) 的距离平方为 (0−(−2))2+(0−(−2))2=8。
因此最小值为 1。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册