当两个点距离小于直径时,由它们为弦确定的一个单位圆(虽然有两个圆,但是想一想知道只算一个就可以)来计算覆盖多少点。

#include <cstdio>
#include <cmath>
#define N 301
#define eps 1e-5
using namespace std;
int n,ans,tol;
double x[N],y[N],dx,dy;
inline double sqr(double x)
{
return x*x;
}
inline double dis(int a,int b)
{
return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}
inline void solve()
{
tol=;
for(int i=; i<=n; i++)
if(dis(,i)<=+eps)
tol++;
if(tol>ans)ans=tol;
}
inline void get(int a,int b){
double v=atan((x[b]-x[a])/(y[a]-y[b]));//等于0时会返回inf,v=pi/2
double c=sqrt(-sqr(dis(a,b)/2.0));
dx= c*cos(v);
dy= c*sin(v);
}
int main()
{
while(scanf("%d",&n)&&n)
{
ans=;
for (int i=; i<=n; i++)
scanf("%lf%lf",&x[i],&y[i]);
for (int i=; i<=n; i++)
for (int j=i+; j<=n; j++)
if(dis(i,j)<){
double mx=(x[i]+x[j])/2.0,my=(y[i]+y[j])/2.0;
get(i,j);
x[]=mx+dx,y[]=my+dy;
solve();
}
printf("%d\n",ans);
}
}
  

最新文章

  1. centos7使用传统网卡名
  2. iOS开发UI篇—Quartz2D简单介绍
  3. django关闭debug后,静态文件的处理
  4. 用java实现冒泡排序法
  5. BZOJ 1024: [SCOI2009]生日快乐 dfs
  6. 转:理解 Linux 的硬链接与软链接
  7. mysql 导出,导入数据
  8. Activity之onWindowFocusChanged
  9. 洛谷-拼数-NOIP1998提高组复赛
  10. 明确MangoDB在企业中应用
  11. C# 当中 LINQ 的常规用法(Lambda 方式)
  12. Mysql学习之基础
  13. 不使用循环或递归判断一个数是否为3的幂(leetcode 326)
  14. 语音端点检测(Voice Activity Detection,VAD)
  15. 2018年12月份GitHub上最热门的Java开源项目
  16. 线程变量---ThreadLocal类
  17. shiro简单学习的简单总结
  18. 初识linux------用户和用户组
  19. Oracle 学习总结 - 表和索引的性能优化
  20. JavaScript对象与JSON字符串的相互转换

热门文章

  1. Eclipse tooltip变黑的修正
  2. bzoj3223 文艺平衡树 (treap or splay分裂+合并)
  3. js的client、scroll、offset详解与兼容性
  4. zkw费用流+当前弧优化
  5. 04Spring_bean 后处理器(后处理Bean),BeanPostProcessor ,bean创建时序,动态代理
  6. (转)c# 解析JSON的几种办法
  7. NOI2018准备Day7
  8. NOI2018准备Day4
  9. JAVA格物致知基础篇:用JAX-RS和Jersey打造RESTful Service
  10. cookie记住密码功能