hdu 1007(最近点对)
生活随笔
收集整理的這篇文章主要介紹了
hdu 1007(最近点对)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近點(diǎn)對(duì)問題定義:已知上m個(gè)點(diǎn)的集合,找出對(duì)接近的一對(duì)點(diǎn)。
? ? ?在二維空間里,可用分治法求解最近點(diǎn)對(duì)問題。預(yù)處理:分別根據(jù)點(diǎn)的x軸和y軸坐標(biāo)進(jìn)行排序,得到X和Y,很顯然此時(shí)X和Y中的點(diǎn)就是S中的點(diǎn)。
情況(1):點(diǎn)數(shù)小于等于三時(shí):
參考博客:http://www.cnblogs.com/AdaByron/archive/2011/10/07/2200966.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
情況(2):點(diǎn)數(shù)大于三時(shí): ?????首先劃分集合S為SL和SR,使得SL中的每一個(gè)點(diǎn)位于SR中每一個(gè)點(diǎn)的左邊,并且SL和SR中點(diǎn)數(shù)相同。分別在SL和SR中解決最近點(diǎn)對(duì)問題,得到DL和DR,分別表示SL和SR中的最近點(diǎn)對(duì)的距離。令d=min(DL,DR)。如果S中的最近點(diǎn)對(duì)(P1,P2)。P1、P2兩點(diǎn)一個(gè)在SL和一個(gè)在SR中,那么P1和P2一定在以L為中心的間隙內(nèi),以L-d和L+d為界,如下圖所示:? ? ? ? ? ? ? ? ? ? ? ?
?????如果在SL中的點(diǎn)P和在SR中的點(diǎn)Q成為最近點(diǎn)對(duì),那么P和Q的距離必定小于d。因此對(duì)間隙中的每一個(gè)點(diǎn),在合并步驟中,只需要檢驗(yàn)yp+d和yp-d內(nèi)的點(diǎn)即可。 步驟1:根據(jù)點(diǎn)的y值和x值對(duì)S中的點(diǎn)排序。 步驟2:找出中線L將S劃分為SL和SR 步驟3:將步驟2遞歸的應(yīng)用解決SL和SR的最近點(diǎn)對(duì)問題,并令d=min(dL,dR)。 步驟4:將L-d~L+d內(nèi)的點(diǎn)以y值排序,對(duì)于每一個(gè)點(diǎn)(x1,y1)找出y值在y1-d~y1+d內(nèi)的所有點(diǎn),計(jì)算距離為d'。 ? ? ? ? ? ? ? ? 如果d'小于d,令d=d',最后的d值就是答案。參考博客:http://www.cnblogs.com/AdaByron/archive/2011/10/07/2200966.html
總結(jié)
以上是生活随笔為你收集整理的hdu 1007(最近点对)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「微信小程序」剖析(二):框架原理 |
- 下一篇: JEECG 3.7新版在线文档WIKI正