题解 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);
}