最近点对
// 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; }