题解 P1257 【平面上的最接近点对】

· · 题解

看了楼下如此多的正解,本蒟蒻发一篇简单的非正解暴力代码,90分,开O2优化100分

附上代码:

 #include<map>
#include<list>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define in inline
#define ri register int
using namespace std;
struct gg{
    int x,y;
}a[10100];
int n;
double ans=123456789.0;
in void dis(int x,int y){
    ans=min(ans,sqrt(1.0*(pow(a[x].x-a[y].x,2)+pow(a[x].y-a[y].y,2))));//勾股定理求距离 
    return;
}
int main(){
    scanf("%d",&n);
    for(ri i=1;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);//读入每个点的坐标 
    for(ri i=1;i<=n;i++)
        for(ri j=i+1;j<=n;j++)
            dis(i,j);//最原始的暴力枚举
    printf("%.4lf",ans);
    return ~~(0-0);
}