zoukankan      html  css  js  c++  java
  • 平面最近点对(HDU 1007)

    题解:点击

    #include <stdio.h> 
    #include <string.h> 
    #include <algorithm> 
    #include <iostream> 
    #include <math.h> 
    using namespace std; 
    const double eps = 1e-6; 
    const int MAXN = 100010; 
    const double INF = 1e20; 
    struct Point 
    { 
        double x,y; 
    }; 
    double dist(Point a,Point b) 
    { 
        return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); 
    } 
    Point p[MAXN]; 
    Point tmpt[MAXN]; 
    bool cmpxy(Point a,Point b) 
    { 
        if(a.x != b.x)return a.x < b.x; 
        else return a.y < b.y; 
    } 
    bool cmpy(Point a,Point b) 
    { 
        return a.y < b.y; 
    } 
    double Closest_Pair(int left,int right) 
    { 
        double d = INF; 
        if(left == right)return d; 
        if(left + 1 == right) 
            return dist(p[left],p[right]); 
        int mid = (left+right)/2; 
        double d1 = Closest_Pair(left,mid); 
        double d2 = Closest_Pair(mid+1,right); 
        d = min(d1,d2); 
        int k = 0; 
        for(int i = left;i <= right;i++) 
        { 
            if(fabs(p[mid].x - p[i].x) <= d) 
                tmpt[k++] = p[i]; 
        } 
        sort(tmpt,tmpt+k,cmpy); 
        for(int i = 0;i <k;i++) 
        { 
            for(int j = i+1;j < k && tmpt[j].y - tmpt[i].y < d;j++) 
            { 
                d = min(d,dist(tmpt[i],tmpt[j])); 
            } 
        } 
        return d; 
    } 
    int main() 
    { 
        int n; 
        while(scanf("%d",&n)==1 && n) 
        { 
            for(int i = 0;i < n;i++) 
                scanf("%lf%lf",&p[i].x,&p[i].y); 
            sort(p,p+n,cmpxy); 
            printf("%.2lf
    ",Closest_Pair(0,n-1)/2); 
        } 
        return 0; 
    } 
  • 相关阅读:
    Solaris 默认Shell 修改
    关系数组
    文件描述符 文件操作 <> open 文件句柄
    IO 双引号 输出 输入
    第五章答案
    子例程 subroutine
    钻石操作符
    花括号的使用 printf %${width}s , 否则会 去找 $widths
    print reverse <> 是打印全部的文件内容 ?
    hihoCoder#1239 Fibonacci
  • 原文地址:https://www.cnblogs.com/xzxl/p/7247633.html
Copyright © 2011-2022 走看看