HDU 1077 枚举圆心, 数学
来源:互联网 发布:闲来湖南麻将源码 编辑:程序博客网 时间:2024/04/29 05:47
从所有点中依次取两点,然后判断到两点m, n距离为半径1的点centre(易知center在m, n连线的中垂线上)。然后判断其余有多少点在以centre为圆心的圆内,记作ans,最后找出最大的ans,就是要求的值。
#include <iostream>#include <cmath>const double eps=1e-6;const int MAXN=305;struct point{double x,y;};struct point ps[MAXN];int N;double get_dis(int a,int b){return (ps[a].x-ps[b].x)*(ps[a].x-ps[b].x)+(ps[a].y-ps[b].y)*(ps[a].y-ps[b].y);}void get_center(int a,int b){double ox,oy,dx,dy,r,temp;ox=(ps[a].x+ps[b].x)/2;oy=(ps[a].y+ps[b].y)/2;dx=ps[b].x-ps[a].x;dy=ps[b].y-ps[a].y;ps[N].x=ox;ps[N].y=oy;temp=get_dis(N,b);r=sqrt(1.0-temp);if(fabs(dx)<eps)//竖直的情况ps[N].x-=r;//+或-都可以else{double ang=atan(-dy/dx);ps[N].x-=r*sin(ang);//+或-都可以ps[N].y-=r*cos(ang);}}int main(){int T,i,j,k,max;scanf("%d",&T);while(T--){scanf("%d",&N);for(i=0;i<N;i++)scanf("%lf%lf",&ps[i].x,&ps[i].y);int ans=1;for(i=0;i<N;i++)//枚举O(n^2){for(j=i+1;j<N;j++){if(get_dis(i,j)>=4) continue;get_center(i,j);for(k=0,max=0;k<N;k++){if(N-k+max<=ans) break;double temp=sqrt(get_dis(k,N));if(temp<=1.000001)max++;}if(max>ans)ans=max;}}printf("%d\n",ans);}return 0;}
- HDU 1077 枚举圆心, 数学
- HDU--1077[Catching Fish] 枚举圆心
- hdu-1077-Catching Fish-计算几何、枚举圆心
- HDU--3264[Open-air shopping malls] 枚举圆心+二分半径
- hdu1077【计算几何,枚举圆心】
- hdu 1006 Tick and Tick 数学+枚举
- HDU 5778 abs (数学+暴力枚举)
- hdu 4779 Tower Defense(组合数学 枚举)
- HDU 5175 Misaki's Kiss again(数学,暴力枚举)
- hdu 1271 整数对(数学+枚举+stl)
- hdu 3113 Sum of Cubes 数学 枚举 剪枝
- hdu 4937 Lucky Number 进制转换-枚举/数学
- HDU 4588 Count The Carries (数学-- 二进制技巧枚举)
- 【枚举】Fish学数学
- hdu5288数学枚举因子
- HDU - 5288-OO’s Sequence-数学+分类再二分+枚举+contribution costing
- hdu 5109 Alexandra and A*B Problem(取模,枚举,数学数论)
- hdu-5812- Distance-(数学+枚举约数+素筛法(素因子数量表))
- 存储过程与触发器的含义及区别
- hdu-4414-Finding crosses
- 念,心随君浅舞天涯
- hdu 4415~贪心
- 一个合格的程序员应该读过哪些书
- HDU 1077 枚举圆心, 数学
- 关于TableViewCell生成时dequeueReusableCellWithIdentifier的认识
- linux 系统初始化过程详解
- Fire Net from http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2
- 做饭记
- 最新IE远程代码执行漏洞分析
- Linux Cache 机制探究
- 线程同步机制初识
- 类图-细节的简单描述