| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么会超时啊啊啊啊#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
struct point{
int flag;
int x,y;
};
point s[200002];
int y[200002];
int t,n;
double max=9999999;
double dis(point p1,point p2){
if(p1.flag==p2.flag)
return 99999999;
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
bool cmpx(point p1,point p2){
if(p1.x==p2.x) return p1.y<p2.y;
return p1.x<p2.x;
}
bool cmpy(point p1,point p2){
if(p1.y==p2.y) return p1.x<p2.x;
return p1.y<p2.y;
}
int x_cmp(const void *a,const void *b){
if(((point*)a)->x<((point*)b)->x)
return -1;
else return 1;
}
int y_cmp(const void*a,const void*b){
if(s[(*(int*)a)].y<s[(*(int*)b)].y)
return -1;
else
return 1;
}
double Nearest(int first,int last){
if(last-first==1)
return dis(s[first],s[last]);
else if(last-first==2){
double d1,d2,d3,d4;
d1=dis(s[first],s[first+1]);
d2=dis(s[first],s[first+2]);
d3=dis(s[first+1],s[first+2]);
d4=(d1<d2?d1:d2);
return (d3<d4?d3:d4);
}
int mid=(first+last)/2;
double min=(Nearest(first,mid)<Nearest(mid+1,last)?Nearest(first,mid):Nearest(mid+1,last));
if(min==0)
return 0;
int y_end=0;
int i,j;
double d;
for(i=mid;s[mid].x-s[i].x<min&&i>=first;i--)
y[y_end++]=i;
for(i=mid+1;s[i].x-s[mid].x<min&&i<=last;i++)
y[y_end++]=i;
qsort(y,y_end,sizeof(y[0]),y_cmp);
for(i=0;i<y_end;i++){
for(j=i+1;j<y_end&&s[y[j]].y-s[y[i]].y<min;j++){
d=dis(s[y[i]],s[y[j]]);
if(min>d)
min=d;
}
// min=(min<dis(s[y[j]],s[y[i]])?min:dis(s[y[j]],s[y[i]]));
}
return min;
}
int main(){
int i,j;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d",&s[i].x,&s[i].y);
s[i].flag=0;
}
for(i=n;i<2*n;i++){
scanf("%d%d",&s[i].x,&s[i].y);
s[i].flag=1;
}
qsort(s,2*n,sizeof(s[0]),x_cmp);
printf("%.3f\n",Nearest(0,2*n-1));
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator