题目链接

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

题意

给你一些二维平面上的点,找一个与x轴相切的半径最小的圆包含所有点。

做法

首先如果两边都有点的情况一定是找不到这样的圆的,否则一定可以找到这样的圆首先如果两边都有点的情况一定是找不到这样的圆的,否则一定可以找到这样的圆首先如果两边都有点的情况一定是找不到这样的圆的,否则一定可以找到这样的圆
我们可以发现圆心横坐标一定越贴近中间越好,所以满足三分的性质我们可以发现圆心横坐标一定越贴近中间越好,所以满足三分的性质我们可以发现圆心横坐标一定越贴近中间越好,所以满足三分的性质
而且我们固定横坐标就可以算出半径R而且我们固定横坐标就可以算出半径R而且我们固定横坐标就可以算出半径R
所以只要每次向需要半径更小的范围内三分即可所以只要每次向需要半径更小的范围内三分即可所以只要每次向需要半径更小的范围内三分即可
计算半径的方法如下计算半径的方法如下计算半径的方法如下

所以有(R−y1)2+(x−x1)2=R2所以有(R-y1)^2+(x-x1)^2=R^2所以有(R−y1)2+(x−x1)2=R2
R=(x−x1)2+y122×y1R=\frac{\left( x-x1 \right) ^2+y_{1}^{2}}{2\times y_{_1}}R=2×y1​​(x−x1)2+y12​​

代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define dbg(x) cout<<#x<<" = "<<x<<endl
const int maxn = 1e5+6;
const double eps = 1e-10;
int n;
double x[maxn],y[maxn];
double solve(double xx)
{double ans=0.0;for(int i=1;i<=n;i++){double tmp=(xx-x[i])*(xx-x[i])+1.0*y[i]*y[i];tmp=tmp/(2.0*y[i]);ans=max(ans,tmp);}return ans;
}
double trisection_search(double left, double right)
{double midl,midr;while (right-left>1e-7){midl=(left+right)/2.0;midr=(midl+right)/2.0;if(solve(midl)<=solve(midr)) right=midr;else left=midl;}return solve(left);
}
int main()
{scanf("%d",&n);int flag=0;for(int i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);int sum[2]={0,0};for(int i=1;i<=n;i++){if(y[i]<0) sum[0]++;if(y[i]>0) sum[1]++;}if(sum[0]>0&&sum[1]>0){printf("-1\n");return 0;}for(int i=1;i<=n;i++) y[i]=abs(y[i]);printf("%.10f\n",trisection_search(-1e20,1e20));return 0;
}

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

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

    地址:http://codeforces.com/contest/1059/problem/D 思路:题目大意为找与x轴相切并且包含所有点的圆的最小半径. 一,对半径r二分,由于圆与x轴相切,圆心(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. 用计算机KADIO算方差,KADIO计算器怎样算方差
  2. PTA浙大版python程序设计题目集--第2章-2 计算分段函数[1] (10 分)
  3. HTML5好从业吗?为什么都热衷于HTML5全栈工程师呢?
  4. 我只是一只碌碌无为的工蚁 : (
  5. 服务器打包运营级H5商城源码
  6. 使用Putty密钥认证机制远程登录Linux
  7. django系列3.3--CBV 和 FBV
  8. 国际短信平台哪家好?
  9. 经典与科技碰撞之美!CGU 2018九段卡皇耀世登场
  10. jmail mysql_Jmail组件使用方法及注意事项 | 域名频道
  11. 51定时器PWM调节
  12. 怎么压缩图片大小?这些压缩方法值得收藏
  13. 超声波传感器(CHx01) 学习笔记 Ⅲ - I2C读写操作
  14. 专业计算机和游戏计算机配置要求,游戏直播电脑配置要求2019|游戏直播电脑配置单推荐(可装win7)...
  15. 世界黄金价格走势,十大香港国际黄金交易平台排行榜
  16. 抖音近期比较火的挤地铁教程+源码
  17. scrapy爬虫实战:安居客深圳二手房
  18. STM-32-ADC模拟数字转换(AD单通道转换)
  19. Panaya进入中国市场 或引领ERP行业变革
  20. 记录Layui-select中的搜索下拉框lay-search相关的使用(对于初次使用是真的难顶)

热门文章

  1. Java项目:医院管理系统(java+SpringBoot+Layui+Freemaker+maven+mysql)
  2. Win10 / Win11、VScode内置终端美化教程(适用于 oh-my-posh 老版本 新版本请查看官网教程...)
  3. Java版支付宝手机网站支付
  4. Self referencing loop detected with type的原因以及解决办法
  5. 用户体验为什么重要?如何提升产品的用户体验?(写给产品小白)
  6. 中国消费者信心指数连月下跌...
  7. STG74S-E1G000-1-A-AHS霍尼韦尔压力变送器
  8. 太空射击 第05课: 敌人精灵
  9. 《JavaScript》JavaScript教程
  10. Java AES加密工具类