本文主要是介绍[ZJU 2107]Quoit Design(平面最近点对),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目大意】:
给你N个点,求最近的两个点的距离,然后除以2输出。
【题目分析】:
这个就是经典的平面最近点对问题。求法就是分支策略,不断地二分,然后取最小。然后需要注意的就是越过中线的点对的处理。
其实那个很猥琐,想法就是找出变长为2ans*ans的矩形,然后进行枚举。这里有个很诡异的结论,就是这个矩形当中的点数不会超过8。
大致流程:
1、先按照x和y坐标进行排序
2、调用分治程序
3、分情况讨论
4、若是一个点则返回无穷大
5、若是两个点则返回两点之间的距离
6、若是多个点则分治
7、合并,查看是否最近点对是否跨立于左右区域
8、假设当前最近点对距离为ans,则寻找在2ans*ans的矩形范围内点
9、可以证明,2ans*ans这个矩形的点不超过8个,之后进行枚举
10、得出最近点对
【代码(很丑,大家尽情鄙视~)】:
这篇关于[ZJU 2107]Quoit Design(平面最近点对)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!