这道题的正解是 分治求最近点对,但是我们用朴素解法 枚举所有点对 也能在考试时拿到一定的分数。
题意是:给定平面上 n 个点,求任意两点欧氏距离平方 (x1−x2)2+(y1−y2)2 的最小值。
朴素做法:
某城市计划在多个地点建立信号塔,所有信号塔的覆盖范围均为圆形,现给定所有信号塔的坐标(二维平面上的点),要求检测信号塔间的距离 (x1−x2)2+(y1−y2)2,请返回所有信号塔间的最小距离。
第一行为整数 n(2≤n≤100000),表示表示信号塔数量。
接下来 n 行,每行包含两个整数 x(−100000≤x≤100000) 和 y(−100000≤y≤100000),以空格分隔,表示信号塔的坐标。
一个整数,表示所有信号塔间的最小距离。
输入
5
0 0
0 5
3 4
3 5
3 6
输出
1
说明
最近的点对是 (3,4) 和 (3,5),距离为 (3−3)2+(5−4)2=1 。
输入
4
0 0
0 1
1 0
1 1
输出
1
说明
最近的点对是 (0,0)、(0,1) 和 (0,0)、(1,0),距离为 (0−0)2+(1−0)2=1
输入
2
0 0
1 1
输出
2
说明
最近的两个点是 (0,0) 和 (1,1),距离为 (1−0)2+(1−0)2=2 。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册