首页 > 编程知识 正文

圆上一点到直线的最短距离,两点之间的欧式距离

时间:2023-05-05 08:17:10 阅读:173571 作者:2593

最小点对(欧几里得距离)

//problem : quoitdesign//contest :结实的小伙//URL :3358 ACM.hdu.edu.cn/show problem.PHP? PID=1007//memory limit 336065 MB//time limit 336010000 ms//date :2021-02-222033601836039///------336036039 tytyy typedef unsigned long long ull; const int N=1e5 5,M=2e4 5,mod=1e9 7; #defineMST(a,b ) memset(a ) a、b、sizeof a ) #define PII pairint,int # definesesecond # definepbemplaplair voidprint(int*a,int n ) { for } inti=1; in; I ) printf('%d ',a[i]; printf(%d(n ),a[n]; (}int n; struct node{double x,y; }a[N],v[10]; boolCMPxy(nodea,node b ) {return a.x==b.x? a.yb.y:a.xb.x; }boolcmpy(nodea,node b ) ) {return a.yb.y; }doubledis(nodea,node b ) returnsqrt ) (a.x-b.x ) ) (a.x-b.x ) ) ) a.y-b.y ) ) ) a ) }doublemindis(intL,int r ) ) intm=(LR ) 1; if(l==r ) return inf; if(lwxdyx==r ) returndis ) a[r],a[r]; doubled=min(mindis(L,m ),mindis ) mwxdyx,r ); int k=0; for(intI=L; k6i=r; 只有I () /最多6点)//Fabs(a(I ).x-a ).x )=d可能会变得更小。 if ) Fabs ) a ) I ).x-a ).x )=d ) v ) k ) ) a ) ((sort ) v、v k、cmpy; //Y进行排序,y也满足=dfor(intI=0; ik; I ) for(intj=iwxdyx; jkv[j].y-v[i].y=d; j ) ) doublet=dis(v[I],v[j]; if(TD ) d=t; }return d; (}int main ) ) while(~scanf ),n ) ) for ) intI=1; i=n; I ) scanf('%lf%lf )、a[i].x、a[i].y ); sort(awxdyx、a nwxdyx、cmpxy ); printf('%.2fn ',mindis(1) ) 1,n )/2.0 ); }return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。