简洁翻译:

有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. [ACM] POJ 3253 Fence Repair (Huffman树思想,优先队列)

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25274   Accepted: 8131 Des ...

  2. PHP读取excel(5)

    如果数据量很大的时候,就需要用PHPExcel迭代器逐行读取,具体代码如下: <?php header("Content-Type:text/html;charset=utf-8&qu ...

  3. RecyclerViewDemo

    https://github.com/eltld/RecyclerViewDemo

  4. 李洪强iOS开发之-入门指南

    李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...

  5. openwrt gstreamer实例学习笔记(四. gstreamer Bins)

    1)概述 Bins是一种容器element.你可以往Bins中添加element.由于Bins本身也是一种element,所以你可以像普通element一样 操作Bins.因此,先前关element的 ...

  6. MYSQL强制使用索引和禁止使用索引

    mysql强制索引和禁止某个索引 1.mysql强制使用索引:force index(索引名或者主键PRI) 例如: select * from table force index(PRI) limi ...

  7. 嵌入式驱动开发之2440/2410---uboot 移植

    http://blog.chinaunix.net/uid-20620288-id-3058904.html

  8. python第三方库系列之十八--python/django test库

    django是属于python语音的web框架,要说django測试.也能够先说说python的測试.django能够用python的方式測试,当然,django也基于python封装了一个自己的測试 ...

  9. zTree async 动态参数处理

    async:{ enable: true,//开启异步机制 url: opts.url,//异步地址 otherParam: {  'plateNo': function(){ return $('# ...

  10. group by where having 联合使用

    having子句与where有相似之处但也有区别,都是设定条件的语句.在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优 ...