前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

hdu1077

作者头像
@坤的
发布2018-06-04 11:23:03
2810
发布2018-06-04 11:23:03
举报
文章被收录于专栏:*坤的Blog*坤的Blog

#include<iostream> #include<cmath> using namespace std; struct Point { double x,y; }; double dis_sq(const Point& a,const Point& b) //距离平方 { return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); } Point lock_center(const Point& a,const Point& b) { Point s,e,m; double d,c,ang; s.x=b.x-a.x; //用于计算角度 s.y=b.y-a.y; m.x=(a.x+b.x)/2.0; //中点 m.y=(a.y+b.y)/2.0; d=dis_sq(a,m); c=sqrt(1.0-d); if(fabs(s.y)<1e-8) //ab是直径 { e.x=m.x; e.y=m.y+c; } else { ang=atan(-s.x/s.y); //求弦ab的垂直平分线与x轴所成的夹角 e.x=m.x+c*cos(ang); e.y=m.y+c*sin(ang); } return e; } int main() { int T,n,i,j,k,ans,tmp; Point p[310],c; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y); ans=1; //一个点时为1种 for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(dis_sq(p[i],p[j])<=4.0) //平方 { c=lock_center(p[i],p[j]); tmp=0; for(k=0;k<n;k++) if(sqrt(dis_sq(c,p[k]))<=1.0001) tmp++; if(ans<tmp) ans=tmp; } cout<<ans<<endl; } return 0; }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-01-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档