地址:http://codeforces.com/contest/1059/problem/D

思路:题目大意为找与x轴相切并且包含所有点的圆的最小半径。

一,对半径r二分,由于圆与x轴相切,圆心(x,y)中y=r,那么只要看x是否存在即可,对于每一个点找其为圆心,半径为r时在y=r直线上的范围,最后看所有的点是否有公共范围即可

二,对圆心(x,y)中x进行三分,x一定在所有点的x范围[l,r]内,并且其半径r的变换曲线是个U型的

Code 1:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long double LD;struct node{LD x;LD y;
};
const int MAX_N=100005;
const LD emp=1e-7;
int n;
node a[MAX_N];int main()
{LD ans=0;scanf("%d",&n);for(int i=0;i<n;++i){cin>>a[i].x>>a[i].y;if(a[i].y>0)  ++ans;else    a[i].y=-a[i].y;}if(ans&&ans!=n)   ans=-1;LD L=0,R=1e18+5,H;LD h,l,r,li,ri,t;while(R-L>emp&&ans!=-1){h=(L+R)/2;l=-1e7;  r=1e7;bool boo=true;for(int i=0;i<n;++i){if(h<a[i].y-h){boo=false;  break;}
//          t=sqrt(h*h-(a[i].y-h)*(a[i].y-h)); //这样写精度不够。。 t=sqrt(h+h-a[i].y)*sqrt(a[i].y);li=a[i].x-t; ri=a[i].x+t;l=max(l,li); r=min(r,ri);if(l>r){boo=false; break;}}if(boo) R=h;else   L=h;}if(ans!=-1){ans=L;printf("%.10Lf\n",ans);}else    printf("-1\n");return 0;
}

Code 2:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long double LD;struct node{LD x;LD y;
};
const int MAX_N=100005;
const LD eps=1e-7;
int n;
node a[MAX_N];LD judge(LD x){LD r=0,tmp;for(int i=0;i<n;++i){tmp=((x-a[i].x)*(x-a[i].x)+a[i].y*a[i].y)/(2.0*a[i].y);r=max(r,tmp);}return r;
}
int main()
{LD ans=0;scanf("%d",&n);for(int i=0;i<n;++i){scanf("%Lf%Lf",&a[i].x,&a[i].y);if(a[i].y>0)    ++ans;else    a[i].y=-a[i].y;}if(ans&&ans!=n)   ans=-1;LD l=-1e8,r=1e8,t1,t2;int ss=100;while(ss--&&ans!=-1){t1=l+(r-l)/3;   t2=r-(r-l)/3;if(judge(t1)<=judge(t2))  r=t2;else  l=t1;}if(ans!=-1){ans=judge(l);printf("%Lf\n",ans);}else   printf("-1\n");return 0;
}

Codeforces Round #514 (Div. 2)-D. Nature Reserve相关推荐

  1. 【Codeforces Round #514 (Div. 2) D. Nature Reserve】 三分+推公式

    题目链接 Codeforces Round #514 (Div. 2) D. Nature Reserve 题意 给你一些二维平面上的点,找一个与x轴相切的半径最小的圆包含所有点. 做法 首先如果两边 ...

  2. Codeforces Round #514 (Div. 2)

    A了两道题,第三题没看懂,第五题没看完,第四题还没来得及看. Codeforces Round #514 (Div. 2) A. Cashier #include<iostream> #i ...

  3. Codeforces Round #514 (Div. 2)题解

    Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...

  4. Codeforces Round #797 (Div. 3)无F

    Codeforces Round #797 (Div. 3)无F 这打的也太屎了,白天把G补了才知道简单的很,但f还是没头绪呜呜呜 Problem - A - Codeforces Given the ...

  5. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  6. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  7. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  8. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  9. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

最新文章

  1. redis 4.0.8 源码包安装集群
  2. 大约xib连接错误bug正确
  3. SAP Spartacus取语言设置的入口程序
  4. ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化
  5. 如何发送Excel中图表到邮件
  6. sharepoint2007就地升级2010系列(三)升级系统
  7. C++11 auto类型说明符
  8. AngularJS Provider/Service/Factory 使用
  9. UE4之ACharacter移动人物并显示动画效果
  10. css左侧投影_css单边投影与双侧投影
  11. java自动推送百度收录_站点添加百度自动推送和360自动推送代码,让收录更快!...
  12. 《C语言程序设计》课后习题答案(第四版)谭浩强
  13. c++ ——第一个MFC界面
  14. Matlab-Simulink文件类型总结
  15. hive建表语句 增加字段、分区基础操作
  16. maven项目关系依赖
  17. 2021-03-17 工作中服务乱码问题解决措施
  18. 如何在电脑上用Win11便签备忘录提醒重要工作
  19. word中生成带方块的对勾
  20. iphone链接android热点好卡,热点连接问题

热门文章

  1. 测试工程师面试题,你都遇到过哪些呢?
  2. asp上传文件到ftp服务器,ASP.NET 中使用 FTP 上传文件
  3. wap网站服务器要求,使您的WEB服务器支持WAP数据发送
  4. 人工智能发展月报(2022年11月)
  5. pandas读取excel使用read_excel()中的usecols参数读取指定的列
  6. Mac下brew及brew-cask安装使用
  7. 转:对冲基金交易策略框架
  8. 无线传感网络的发展现状及研究中的关键技术
  9. C++模板/泛型编程
  10. 计算机系统构成及硬件基础知识(中级软件评测师备考笔记)