标签:
1 #include<stdio.h>/*此题坐标按照y升序排列,然后进行计算比较*/ 2 #include<math.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 using namespace std; 6 typedef struct 7 { 8 double x,y; 9 }node; 10 node a[100002]; 11 int cmp(node p,node q)/*对结构体排序*/ 12 { 13 return p.y<q.y; 14 } 15 int main() 16 { 17 int T; 18 while(scanf("%d",&T)==1) 19 { 20 if(!T) 21 break; 22 else 23 { 24 int i,j; 25 double min1=99999999.0,min; 26 double d; 27 for(i=0;i<T;i++) 28 scanf("%lf%lf",&a[i].x,&a[i].y); 29 sort(a,a+T,cmp); 30 for(i=0;i<T-1;i++) 31 { 32 d=pow(a[i+1].x-a[i].x,2)+pow(a[i+1].y-a[i].y,2); 33 min1=d<min1?d:min1; 34 } 35 printf("%.2lf\n",sqrt(min1)/2);/*最后在开方,节省时间*/ 36 } 37 } 38 }
#include<stdio.h>/*我先按照x升序排列,求最小距离,在按照y升序排列求最小,然后比较,结果还WA了,果断怀疑这题数据给的有问题,讨论组也这么喷!*/ #include<math.h> #include<stdlib.h> #include<algorithm> using namespace std; typedef struct { double x,y; }node; node a[100002]; int cmp1(node p,node q) { return p.x<q.x; } int cmp2(node p,node q) { return p.y<q.y; } int main() { int T; while(scanf("%d",&T)==1) { if(!T) break; else { int i,j; double min1=99999999.0,min2=99999999.0,min; double d; for(i=0;i<T;i++) scanf("%lf%lf",&a[i].x,&a[i].y); sort(a,a+T,cmp1); for(i=0;i<T-1;i++) { d=pow(a[i+1].x-a[i].x,2)+pow(a[i+1].y-a[i].y,2); min1=d<min1?d:min1; } sort(a,a+T,cmp2); for(i=0;i<T-1;i++) { d=pow(a[i+1].x-a[i].x,2)+pow(a[i+1].y-a[i].y,2); min2=d<min2?d:min2; } min=sqrt(min1>min2?min2:min1)/2; printf("%.2lf\n",min); } } }
标签:
原文地址:http://www.cnblogs.com/a1225234/p/4496123.html