最近点对
// Name : 最近点对
// Parameter :
// Return : 无
// Reference :
struct Point{
int x,y;
bool operator<(const & a) const{
if(x!a.x) return x<a.x;
return y<a.y;
}
}poi[maxn];
sort(poi,poi+n);
int NearDis(int l,int r,Point a[]){
if(r==l+1) return Dis(l,r);
int m=(l+r)/2;
int d1=NearDis(l,m),d2=NearDis(m,r);
int d=min(d1,d2);
int i=l,j=r;
for(;Dis(i,m)>d;i++);
for(;Dis(m,j)>d;j--);
for(int k=i;k<m;k++)
for(int p=m+1;p<=j;p++)
d=min(d,Dis(k,p));
return d;
}
浙公网安备 33010602011771号