hdu1007 平面最近點對(暴力 雙線程優化)

2022-08-31 04:03:08 字數 653 閱讀 6698

突發奇想,用雙線程似乎可以優化一些暴力

比如說平面最近點對這個題目,把點複製成2份

乙份按照x排序,乙份按照y排序

然後雙線程暴力處理,乙份處理x,乙份處理y

如果資料利用x遞減來卡,那麼由於雙線程,它卡不住y

如果資料利用y遞減來卡,那麼卡不住x

這樣暴力n^2就可以過了

#include #include 

#include

#include

#include

using

namespace

std;

struct

p}p[

100050], p2[100050

];bool cmp(const p &a, const p &b)

double dis(p &a, p &b)

intmain()

if(tot1 >= tot2)

tot1++;

}for(int j = li2; j >= 1; j--)

if(tot2 >= tot1)

tot2++;}}

printf(

"%.2f\n

", sqrt(d)/2

); }

}

hdu1007 最近點對

題意 給你n個點,讓你求最近的兩個點的距離是多少.思路 這個題目我沒思路,我在網上看的是什麼分治 鴿巢原理,分治我知道,鴿巢原理我也知道,但是這個題目就是沒有證明出來他和鴿巢原理有jm關係,總之就是先以x或者y優先sort一下,然後每次列舉每個相鄰點的附近5個就行了 加自己一共六個 而且這個題目的前...

HDU 1007 最近點對

分治法求最近點對 遞迴將點不斷分成小組,計算最短距離。此時的最短距離僅僅是兩點都屬兩塊的某一塊 這裡的分割點是mid點 還需要考慮兩點分屬兩塊的情況。這時對於選點則把範圍縮小到了以mid為中心。再將距離mid點x軸2 mindist範圍點考慮在內。在這些點中,再取mid點,留下那些 y的距離不大於m...

hdu 1007 最近點對

最近點對問題定義 已知上m個點的集合,找出對接近的一對點。在二維空間裡,可用分治法求解最近點對問題。預處理 分別根據點的x軸和y軸座標進行排序,得到x和y,很顯然此時x和y中的點就是s中的點。情況 1 點數小於等於三時 情況 2 點數大於三時 首先劃分集合s為sl和sr,使得sl中的每乙個點位於sr...