Description

已知平面内 N 个点的坐标,求欧氏距离下的第 K 远点对。

Input

输入文件第一行为用空格隔开的两个整数 N, K。接下来 N 行,每行两个整数 X,Y,表示一个点
的坐标。1 < =  N < =  100000, 1 < =  K < =  100, K < =  N*(N−1)/2 , 0 < =  X, Y < 2^31。

Output

输出文件第一行为一个整数,表示第 K 远点对的距离的平方(一定是个整数)。

Sample Input

10 5
0 0
0 1
1 0
1 1
2 0
2 1
1 2
0 2
3 0
3 1

Sample Output

9
这题和上午写的bzoj3053很像 这题求的是平面内第k远的点  上一题怎么搞 开个优先队列搞啊‘这题也是一样我最暴力的做法就是o(n^2)枚举 然后验证 那么不妨我也这么做 开一个小根堆 每次都在我建出的kd-tree上去跑一下 求出我这个从前面1~i的最远的k个点 在一个节点上时如果这个点大于我的最小值 那么我就去做 剩下的同之前一样 可以看代码 注意 queue中需要存2*k个元素 why 因为 我是n^2个点对 所以每个都*2了 最后直接输出堆首即可

 

分类: kd-tree

elijahqi

辣鸡蒟蒻一枚qwq 欢迎加qq qwq 2922945330

发表评论

电子邮件地址不会被公开。 必填项已用*标注