Luogu1429 平面最近點對(加強版)

2022-05-20 18:03:29 字數 749 閱讀 3425

題目大意:

平面最近點對。

思路:分治。

首先將所有點排序

每次把當前區間分為兩半,遞迴求解兩個區間內部的情況,然後列舉區間兩邊的點。

1 #include2 #include3 #include4 #include5 inline int

getint()

12 typedef std::pairpoint;

13const

int n=200000;14

point p[n];

15int

num[n];

16double ans=1e10;

17 inline double sqr(const

double &x)

20 inline double dis(const point &a,const point &b)

23void solve(const

int &l,const

int &r) 33}

34for(register int i=l;i<=mid;i++) 39}

40}41}

42int

main()

47 std::sort(&p[0],&p[n]);

48 solve(0,n-1

);49 printf("

%.4f\n

",ans);

50return0;

51 }

分治 Luogu1429 平面最近點對(加強版)

題面 luogu1429 關於求平面最近點對的方法有很多很多。像是那種隨機旋轉角度然後暴力算的這種方法就很鬼畜qaq 靠譜一點的演算法呢就是分治了 我們計算區間l r的最近距離 首先計算l mid和mid r的最近距離,然後考慮一下mid左邊和mid右邊對答案的貢獻 首先記錄下dist min l ...

p1429 平面最近點對

題意 給平面n個點,求最近的兩個點的距離。思路 運用分治思想,對於n個點,可以分成t n 2 t n 2 的規模,分界線是x座標的中位數,假設左邊點集合為s1,右邊點集合為s2,那麼最小值存在於以下三種情況中。1.s1中任意兩點距離的最小距離 2.s2中任意兩點距離的最小距離 3.s1中的點到s2中...

洛谷1429 平面最近點對(KDTree)

題目鏈結 qwq 明明可以直接分治過掉的 但是還是當作聯絡了 首先,對於這種點的題,很顯然的套路,我們要維護乙個子樹mx i m n i mx i mn i mx i mn i 分別表示每個維度的最大值和最小值 這裡有乙個要注意的東西!就是我們upup up的時候,要判斷一下當前是否還有左 右兒子 ...