zoukankan      html  css  js  c++  java
  • HDU

    传送门

    平面最近点对模板。

    //Achen
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<vector>
    #include<cstdio>
    #include<queue>
    #include<cmath>
    const int N=1e5+7;
    typedef long long LL;
    typedef double db;
    using namespace std;
    int T,n;
    
    template<typename T>void read(T &x)  {
        char ch=getchar(); x=0; T f=1;
        while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
        if(ch=='-') f=-1,ch=getchar();
        for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
    }
    
    struct pt {
        db x,y;
    }p[N],tp[N];
    
    bool cmp(const pt&A,const pt&B) { return A.x<B.x||(A.x==B.x&&A.y<B.y); }
    bool cmpy(const pt&A,const pt&B) { return A.y<B.y; }
    db sqr(db x) {return x*x;}
    db dis(pt A,pt B) { return sqrt(sqr(A.x-B.x)+sqr(A.y-B.y)); }
    
    db solve(int l,int r) {
        db d=1e18;
        if(l>=r) return d;
        if(l+1==r) return dis(p[l],p[r]);
        int mid=((l+r)>>1);
        d=min(d,solve(l,mid)); 
        d=min(d,solve(mid+1,r));
        int k=0;
        for(int i=l;i<=r;i++) 
            if(fabs(p[i].x-p[mid].x)<=d) tp[++k]=p[i];
        sort(tp+1,tp+k+1,cmpy);
        for(int i=1;i<=k;i++) 
            for(int j=i+1;j<=k&&tp[j].y-tp[i].y<d;j++) 
                d=min(d,dis(tp[i],tp[j]));
        return d;
    }
    
    int main() {
    #ifdef DEBUG
        freopen(".in","r",stdin);
        freopen(".out","w",stdout);
    #endif
        for(;;) {
            read(n);
            if(!n) break;
            for(int i=1;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
            sort(p+1,p+n+1,cmp);
            printf("%.2lf
    ",solve(1,n)/2);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [題解]51nod_1515_明辨是非
    任务调度问题(贪心) hdu4864
    B站学习记:贪心与博弈
    poj1505(二分+贪心)
    温故知新:互质排列
    Radar Installation(利用数据有序化进行贪心选择)
    Wooden Sticks(贪心)
    计算a除b的第一位小数 in C++.
    龙龙的暑假贪心算法大冒险
    HDU-2037(贪心)
  • 原文地址:https://www.cnblogs.com/Achenchen/p/8467444.html
Copyright © 2011-2022 走看看