大意:给你一个平面上N(N<=100000)个点,问相切于x轴的圆,将所有的点都覆盖的最小半径是多少。

计算几何???Div2的D题就考计算几何???某人昨天上课才和我们说这种计算几何题看见就溜。。。。

打完比赛才发现好像并不用计算几何,实则是一个二分答案的水题。。

发现如果点在x轴两侧就肯定不行,所以我们把所有的点都挪到一侧。

我们二分一个半径,然后发现因为圆相切于x轴,那么这个圆的圆心一定在y=r的直线上移动。

对于所有的点,它可以被如图的线段AC上的点覆盖,点在AC下方也同理。(终于有个图是我自己画的了。。。)

然后发现圆心的取值就在xi±√(R2-(R-yi)2)之间。

所以说把每个点的可取圆心的点的集合的交算出来,看看是不是空集,不是空集就可行。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
const double eps=1e-;
int n;
struct Node {int x,y;}node[];
bool flag;
bool ck(double mid) {
double l=-1e18,r=1e18;
for(int i=;i<=n;i++) {
if(node[i].y>mid+mid) return ;
double range=sqrt(node[i].y*(*mid-node[i].y));
l=max(l,node[i].x-range);r=min(r,node[i].x+range);
}
return (l-r+eps)<=;
}
int main() {
scanf("%d",&n);
scanf("%d%d",&node[].x,&node[].y);
if(node[].y<) flag=;node[].y=abs(node[].y);
for(int i=;i<=n;i++) {
scanf("%d%d",&node[i].x,&node[i].y);
if(flag&&node[i].y>){puts("-1") ;return ;}
if(flag==false && node[i].y<) {puts("-1");return ;}
node[i].y=abs(node[i].y);
}
double l=,r=1e18;int cnt=;
while(cnt--) {
double mid=(l+r)/;
if(ck(mid)) r=mid;
else l=mid;
}
printf("%lf",l);
}

Nature Reserve

最新文章

  1. Linux实时流量监控工具 - iftop
  2. 【转载】ubuntu和debian环境下无法挂载vmware虚拟机共享目录的解决办法
  3. Linux Shell Bash 带有特殊含义的退出码
  4. ♫【CSS】命名颜色
  5. Socket编程模式
  6. float的深入剖析
  7. 用C写一个web服务器(二) I/O多路复用之epoll
  8. php 启动过程 - reqeust RINIT 过程
  9. Oracle清除数据库中长时间占用资源的非活动的会话
  10. 10个html5增加的重要新特性和内容
  11. HDU 1051(处理木棍 贪心)
  12. 用户对动态PHP网页访问过程,以及nginx解析php步骤
  13. Python连接mysql出错,_mysql_exceptions.OperationalError: (1045, &quot;Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)&quot;)
  14. MyBio小隐本记注册破解
  15. Django框架的使用教程--类视图-中间间-模板[六]
  16. android怎么抓取双向认证https的包
  17. 【c++基础】static修饰的函数作用与意义
  18. Java虚拟机 - Class类文件结构
  19. 【Spark】SparkStreaming-Checkpoint-容错
  20. 多启动引导工具——AIO Boot

热门文章

  1. HDU1074 Doing Homework —— 状压DP
  2. 日元兑换——国内兑换需要护照和签证,国外的机场有兑换ATM
  3. Python进程、线程、协程的对比
  4. python-----群发图片
  5. bzoj 1086 王室联邦 —— 思路题
  6. 一个tomcat部署多个应用实例总结
  7. c语言和c++栈的简单实现以及构造器的原理
  8. HDU 5912 Fraction (模拟)
  9. layui table 详细讲解
  10. javascript匿名方法