简洁翻译:

有N个点,求与y=0相切的,包含这N个点的最小圆的半径

题解

二分半径右端点开小了结果交了二十几次都没A……mmp……

考虑一下,显然这个半径是可以二分的

再考虑一下,如果所有点都在y轴同一侧就有解,否则肯定无解

然后现在只要考虑在y轴同一侧时某一个半径是否能够包含所有点即可

因为得和y轴相切,所以半径确定时,圆心的y坐标是确定的

然后我们考虑对于每一个点,圆心的x坐标必须处在什么范围内

设这个点坐标为(x,y),圆半径为r,如果y>2*r显然不行

然后用勾股定理算一下两点之间的x坐标最多相差多少,那么就可以知道圆心的x坐标在什么范围内了

然后所有的范围并起来,如果是空集不可行,否则可行

然后注意判断x坐标相差多少时候的写法……代码里写了……

 //minamoto
#include<bits/stdc++.h>
using namespace std;
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,:;}
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,:;}
const int N=2e5+;
int n,flag1=,flag2=;double l=,r=1e18,ans=,mx,x[N],y[N];
bool check(double mid){
double L=-1e18,R=1e18;
for(int i=;i<=n;++i){
if(*mid<y[i]) return false;
double len=sqrt(mid-(mid-y[i]))*sqrt(mid+(mid-y[i]));
//这里判断往左右能延伸多少时要这样写
//据说不这样写会导致严重的精度误差
//所以要先开方再相乘
L=max(L,x[i]-len),R=min(R,x[i]+len);
}
return L<R;
}
int main(){
cin>>n;
for(int i=;i<=n;++i){
cin>>x[i]>>y[i];
if(y[i]>) flag1=;
if(y[i]<) flag2=;
}
if(flag1&&flag2) return puts("-1"),;
if(flag2){
for(int i=;i<=n;++i) y[i]=-y[i];
}
int times=;
while(times--){
double mid=(l+r)/;
if(check(mid)) ans=mid,r=mid;
else l=mid;
}
printf("%.10lf\n",ans);
return ;
}

CF1059D Nature Reserve(二分)的更多相关文章

  1. CF1059D Nature Reserve

    原题链接 网络不好的可以到洛谷上去QwQ 题目大意 有N个点,求与y=0相切的,包含这N个点的最小圆的半径 输入输出样例 输入: 2 0 1 1 1 输出 0.625 感觉最多是蓝题难度? 首先无解的 ...

  2. cf1059D. Nature Reserve(三分)

    题意 题目链接 Sol 欲哭无泪啊qwq....昨晚一定是智息了qwq 说一个和标算不一样做法吧.. 显然\(x\)轴是可以三分的,半径是可以二分的. 恭喜你获得了一个TLE的做法.. 然后第二维的二 ...

  3. Codeforces Round #514 (Div. 2):D. Nature Reserve(二分+数学)

    D. Nature Reserve 题目链接:https://codeforces.com/contest/1059/problem/D 题意: 在二维坐标平面上给出n个数的点,现在要求一个圆,能够容 ...

  4. E - Nature Reserve CodeForces - 1059D

    传送门 There is a forest that we model as a plane and live nn rare animals. Animal number iihas its lai ...

  5. Nature Reserve

    Nature Reserve time limit per test:2 seconds memory limit per test:256 megabytes input:standard inpu ...

  6. [CodeForces]1059D Nature Reserve

    大意:给你一个平面上N(N<=100000)个点,问相切于x轴的圆,将所有的点都覆盖的最小半径是多少. 计算几何???Div2的D题就考计算几何???某人昨天上课才和我们说这种计算几何题看见就溜 ...

  7. D - Nature Reserve(cf514,div2)

    题意:给出n(n<=1e5)个点,求一个最小的圆,与x轴相切,并且包含这n个点 思路:我第一想到的是,这个圆一定会经过一个点,再根据与x轴相切,我们可以找到最小的圆,让它包含其余的点,但是如何判 ...

  8. Codeforces Round #514 (Div. 2) D. Nature Reserve

    http://codeforces.com/contest/1059/problem/D 最大值: 最左下方和最右下方分别有一个点 r^2 - (r-1)^2 = (10^7)^2 maxr<0 ...

  9. [ CodeForces 1059 D ] Nature Reserve

    \(\\\) \(Description\) 你现在有\(N\)个分布在二维平面上的整点\((x_i,y_i)\),现在需要你找到一个圆,满足: 能够覆盖所有的给出点 与\(x\)轴相切 现在需要你确 ...

随机推荐

  1. font-family,font-size,color

      CreateTime--2017年12月20日16:43:35 Author:Marydon css设置字体样式 1.font-family 语法:属性值可以有一个或多个,多个值之间使用逗号隔开. ...

  2. js团购倒计时函数代码

    <h1>团购啦!</h1><p>还剩<span id="times"></span></p> <SCR ...

  3. Network Booting

    http://en.wikipedia.org/wiki/Network_booting Network booting Network booting is the process of booti ...

  4. 【iOS开发系列】cell切割线置顶

    废话不多说,直接上代码: /** * tableViewCell切割线左側置顶 < 1 > */ -(void)viewDidLayoutSubviews { if ([_tableVie ...

  5. mac的终端窗口的工作组的使用

    1.打开终端,打开多个tab,分别进入目录, 2.点击窗口,将窗口存储为组,弹窗如下图 可以勾选恢复所有命令,存储 3.下次使用时,点击窗口,打开工作组即可

  6. 【bzoj3210】花神的浇花集会

    将(x,y)转化成(x+y,x-y)可以将切比雪夫距离转化成曼哈顿距离(自己推一推) A.B的切比雪夫距离就是A‘.B‘曼哈顿距离的一半. 那么可以将x.y分离处理,排序中位数即可. 注意如果最后选的 ...

  7. web 前端冷知识

    前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

  8. 高cpu分析

    http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html http://www.open-open.com/lib/view/op ...

  9. Linux内核日志开关

    Linux内核日志开关 1.让pr_debug能输出 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -59,7 +59,7 ...

  10. Javascript中两种最通用的定义类的方法

    在Javascript中,一切都是对象,包括函数.在Javascript中并没有真正的类,不能像C#,PHP等语言中用 class xxx来定义.但Javascript中提供了一种折中的方案:把对象定 ...