Codeforces Round #514 (Div. 2)-D. Nature Reserve
地址: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相关推荐
- 【Codeforces Round #514 (Div. 2) D. Nature Reserve】 三分+推公式
题目链接 Codeforces Round #514 (Div. 2) D. Nature Reserve 题意 给你一些二维平面上的点,找一个与x轴相切的半径最小的圆包含所有点. 做法 首先如果两边 ...
- Codeforces Round #514 (Div. 2)
A了两道题,第三题没看懂,第五题没看完,第四题还没来得及看. Codeforces Round #514 (Div. 2) A. Cashier #include<iostream> #i ...
- Codeforces Round #514 (Div. 2)题解
Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...
- Codeforces Round #797 (Div. 3)无F
Codeforces Round #797 (Div. 3)无F 这打的也太屎了,白天把G补了才知道简单的很,但f还是没头绪呜呜呜 Problem - A - Codeforces Given the ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- 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 ...
- 构造 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 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
最新文章
- redis 4.0.8 源码包安装集群
- 大约xib连接错误bug正确
- SAP Spartacus取语言设置的入口程序
- ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化
- 如何发送Excel中图表到邮件
- sharepoint2007就地升级2010系列(三)升级系统
- C++11 auto类型说明符
- AngularJS Provider/Service/Factory 使用
- UE4之ACharacter移动人物并显示动画效果
- css左侧投影_css单边投影与双侧投影
- java自动推送百度收录_站点添加百度自动推送和360自动推送代码,让收录更快!...
- 《C语言程序设计》课后习题答案(第四版)谭浩强
- c++ ——第一个MFC界面
- Matlab-Simulink文件类型总结
- hive建表语句 增加字段、分区基础操作
- maven项目关系依赖
- 2021-03-17 工作中服务乱码问题解决措施
- 如何在电脑上用Win11便签备忘录提醒重要工作
- word中生成带方块的对勾
- iphone链接android热点好卡,热点连接问题