POJ 3714 平面最近點對

2022-05-24 03:30:08 字數 2013 閱讀 3059

題意:

分為兩種點,求兩種點之間的平面最近點對

題解:分治法。這個怎麼暴力分治都能過。。

吐槽:我用了g++ tle+wa,毛線。。。

view code

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8#define n 222222

9#define eps 1e-7

10#define inf 1e15

1112

using

namespace

std;

1314

struct

po15

p[n];

1920

intn,q1[n],q2[n];

2122 inline bool cmp(const po &a,const po &b)

2326

27 inline int doublecmp(double

x)28

3334 inline double get_dis(po &a,po &b)

3539

40 inline double min(double a,double

b)41

4546 inline void

read()

4754

for(int i=n+1;i<=(n<<1);i++)

5559 n<<=1;60

}6162 inline double getmindis(int l,int

r)63

77for(int i=mid+1;i<=r;i++)

7882

for(int i=1;i<=cnt1;i++)

83for(int j=1;j<=cnt2;j++)

84 mindis=min(mindis,get_dis(p[q1[i]],p[q2[j]]));

85return

mindis;86}

8788 inline void

go()

8993

94int

main()

95

上面那個跑的慢

這題考慮精度反而跪了。。。。無語。。。

zoj 2107/hdu 1007

view code

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8#define n 2222222

9#define eps 1e-7

10#define inf 1e10

1112

using

namespace

std;

1314

struct

po15

p[n],q[n];

1819

intn;

2021 inline bool cmpx(const po &a,const po &b)

2225

26 inline bool cmpy(const po &a,const po &b)

2730

31 inline int doublecmp(double

x)32

3738 inline double get_dis(po &a,po &b)

3942

43 inline double min(double a,double

b)44

4849 inline void

read()

5053

54 inline double getmindis(int l,int

r)55

71return

mindis;72}

7374 inline void

go()

7579

80int

main()

81

poj 3714 平面最近點對

解題思路 在原有的分治演算法上加上標記,如果標記不同的則計算距離,不然的話就返回無窮大.用歸併排序再可以省下logn 這題要是卡資料不知道有什麼更高深的辦法.include include include include include using namespace std const int m...

POJ 3714 最近點對問題 分治法

題意 station和agent分別有n 1 n 100000 個點,求不同類別的最近點對距離。題解 這裡講的很好。include include include include include define max a b a b a b define min a b a b a b define...

poj 3714 Raid(平面最近點對)

給出兩個點集,然後求兩個點集之間的最近距離。思路 開始用的旋轉卡殼,兩個點集先求凸包,這樣就變成了兩個凸包間最近距離,但是死活tle,然後就換了平面最近點對來做,把兩個點集標記一下,判斷下是不是在同乙個點集裡就行了 include include include using namespace st...