平面最近点对
平面最近点对问题是指:求平面内n个点中距离最近的两点间距离。
分治求法:
首先将n个点按以x为第一关键字,y为第二关键字降序排序,然后选取第n/2个点为分割点,分治求左边n/2个点和右边n-n/2个点的平面最近点对,那么答案的范围肯定包括了左边右两边的最近点对了。 d = m i n ( r d , l d ) d=min(rd,ld) d=min(rd,ld).那么d是当前整个平面的最近点对的距离了吗?
答案不是,分治还需要合并!!
最近点对也可能在中间。
下一步以n/2为中间点将x坐标左右d矩形内(缩小范围)的统计下来以,y坐标排序 O ( n 2 ) O(n^2) O(n2)计算这些点的最近距离。
奇袭
在与联盟的战斗中屡战屡败后,帝国撤退到了最后一个据点。
依靠其强大的防御系统,帝国击退了联盟的六波猛烈进攻。
经过几天的苦思冥想,联盟将军亚瑟终于注意到帝国防御系统唯一的弱点就是能源供应。
该系统由N个核电站供应能源,其中任何一个被摧毁都会使防御系统失效。
将军派出了N个特工进入据点之中,打算对能源站展开一次突袭。
不幸的是,由于受到了帝国空军的袭击,他们未能降落在预期位置。
作为一名经验丰富的将军,亚瑟很快意识到他需要重新安排突袭计划。
他现在最想知道的事情就是哪个特工距离其中任意一个发电站的距离最短。
你能帮他算出来这最短的距离是多少吗?
输入格式
输入中包含多组测试用例。
第一行输入整数T,代表测试用例的数量。
对于每个测试用例,第一行输入整数N。
接下来N行,每行输入两个整数X和Y,代表每个核电站的位置的X,Y坐标。
在接下来N行,每行输入两个整数X和Y,代表每名特工的位置的X,Y坐标。
输出格式
每个测试用例,输出一个最短距离值,结果保留三位小数。
每个输出结果占一行。
数据范围
1 ≤ N ≤ 100000 , 0 ≤ X , Y ≤ 1000000000 1≤N≤100000, 0≤X,Y≤1000000000 1≤