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

最大值:

最左下方和最右下方分别有一个点

r^2 - (r-1)^2 = (10^7)^2

maxr<0.5*10^14

Way1:

二分。

difference:

如果使用 5*10^13 -> 10^-6,2^ 60~70区间,pow,sqrt运算,实测超时。

实际上是,使用

time of a case:->

Code:

 #include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+; double x[maxn],y[maxn];
double z=5.0*1e13;
int n; bool work(double m)
{
double p,q,d;
int i;
p=-z; q=z;
for (i=;i<=n;i++)
{
d=sqrt(pow(m,)-pow(m-y[i],));
p=max(p,x[i]-d);
q=min(q,x[i]+d);
// if (p>q)
// return 0;
}
// return 1;
if (p<=q)
return ;
else
return ;
} int main()
{
double l=,r,m;
int v,i;
scanf("%d",&n);
v=;
for (i=;i<=n;i++)
{
scanf("%lf%lf",&x[i],&y[i]);
if (y[i]!=)
{
if (v==)
v=(y[i]>);
else if (v!=(y[i]>))
{
printf("-1");
return ;
}
}
y[i]=fabs(y[i]);
l=max(l,y[i]/);
}
r=z;
while ((r-l)/max(1.0,l)>1e-)
{
m=(l+r)/;
if (work(m))
r=m;
else
l=m;
}
printf("%.10f",r);
return ;
}

Way2:

多个二次函数f1,f2,…,fn,ax^2+bx+c (a>0)

f(x)=max(f1(x),f2(x),…,fn(x)),

而f是先减小,后增大,使用三分法

证明:

设f(x)是由多个连续的二次函数片段组成,相邻的二次函数片段的斜率逐渐增大,而每个二次函数片段都是f''>0,所以当前f''>0

设加入新的函数后,变化的区间为

1.[d1,d2],新的函数的片段替代原来的部分,满足f'‘’>0,且新的函数的片段往d1外,点外延伸,比原来的数值小,满足f'(d1-delta)<f'(d1+delta),f'(d2-delta)<f'(d2+delta)

2.(-inf,d1],[d1,inf)同理。

 #include <bits/stdc++.h>
using namespace std;
#define ll long long
#define minv 1e-6
#define inf 1e9
#define pi 3.1415926536
#define nl 2.7182818284
const ll mod=1e9+;//
const int maxn=1e5+; int a[maxn],b[maxn],x[maxn],y[maxn],n;
double u[maxn],v[maxn],w[maxn]; double f(double m)
{
double mm,z=;
int i;
mm=m*m;
for (i=;i<=n;i++)
z=max(z,u[i]*mm+v[i]*m+w[i]);
return z;
} int main()
{
int cond=,i;
double l,r,m,mm,a,b;
scanf("%d",&n);
for (i=;i<=n;i++)
{
scanf("%d%d",&x[i],&y[i]);
if (y[i]!=)
{
if (cond==)
cond=(y[i]>);
else if (cond!=(y[i]>))
{
printf("-1");
return ;
}
}
y[i]=abs(y[i]);
u[i]=0.5/y[i];
v[i]=-1.0*x[i]/y[i];
w[i]=(1.0*x[i]*x[i]+1.0*y[i]*y[i])//y[i];
}
l=-1.0e7,r=1.0e7;
while ()
{
m=(l+r)/;
mm=(m+r)/;
a=f(m);
b=f(mm);
if (fabs(a-b)/max(1.0,min(a,b))<1e-)
break;
if (f(mm)>f(m))
r=mm;
else
l=m;
}
printf("%.10f",a);
return ;
}

类似:

hdu4717 The Moving Points

Codeforces Round #514 (Div. 2) D. Nature Reserve的更多相关文章

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

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

  2. Codeforces Round #514 (Div. 2)

    目录 Codeforces 1059 A.Cashier B.Forgery C.Sequence Transformation D.Nature Reserve(二分) E.Split the Tr ...

  3. Codeforces Round #514 (Div. 2) E. Split the Tree(倍增+贪心)

    https://codeforces.com/contest/1059/problem/E 题意 给出一棵树,每个点都有一个权值,要求你找出最少条链,保证每个点都属于一条链,而且每条链不超过L个点 和 ...

  4. Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)

    C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...

  5. Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

    题意 给出一个1-n的集合   gcd 集合里面的所有数  得到的 一个 数   然后自己选择删去一个数   要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...

  6. Codeforces Round #514 (Div. 2) B - Forgery

    这个题我一开始没思路,最后也没思路 2个小时一直没思路 本来还想解释题意的,写了半天发现解释的不是很清楚,你还是google翻译一下吧 这个题解法是这样的: 首先,给你图案里面有很多的点,每个点的周围 ...

  7. Codeforces Round #514 (Div. 2) C. Sequence Transformation

    题目大意:给你一个n 从1,2,3......n这个序列中 依次进行以下操作:1 .求所有数的最大公因数,放入a序列里面 2 .任意删去一个元素 一直到序列为空 根据删除元素的不同,导致序列a的字典序 ...

  8. Codeforces Round#514 Div.2 翻车记

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  9. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

随机推荐

  1. 普通程序员看k8s基于角色的访问控制(RBAC)

    一.知识准备 ● 上一节描述了k8s的账户管理,本文描述基于角色的访问控制 ● 网上RBAC的文章非常多,具体概念大神们也解释得很详细,本文没有站在高屋建瓴的角度去描述RBAC,而是站在一个普通程序员 ...

  2. Daily Scrumming* 2015.12.20(Day 12)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1090 https://github.com/buaaclubs-team/temp-front/com ...

  3. 同步手绘板——关于/dev/graphics/fb0权限的获取

    需要先将手机进行root,接着通过代码将/dev/graphics/fb0文件修改为可读的权限

  4. 微信小程序cavas画图并保存

    需求背景: 因微信小程序暂不支持一键分享到朋友圈功能,故要生成图片并保存到手机相册就有两种情况: 1.需保存的图片为静态固定图片.这种情况图片可直接由后端返回,再调用小程序相应api直接保存到手机相册 ...

  5. jQuery中empty与html("")的区别对比

    简单的说empty,首先循环给后代元素移除绑定(释放内存).清除jquery给此dom的cache,然后循环removeFirstChild,而html(''),则是简单暴力的设置innerHTML ...

  6. Mysql 5.7.21 设置主从库同步

    主从复制条件: Mysql 单机多实例安装参考Mysql 5.7.21 设置主从库同步 下面的操作是多实例主从复制,3306为主库,3307为从库. 主库要开启log-bin,主库和从库的server ...

  7. Laravel 5.5 文档 ] 快速入门 —— 安装配置篇

    服务器要求 Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有 ...

  8. [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务

    1. 虚拟机内的地址如果经常变化,或者是想使用宿主机进行网络服务 但是又不想有人能够访问具体的服务器提供机器.. 可以使用宿主机转发虚拟机的端口的方式来进行处理. workstation 比较好实现 ...

  9. Jquery ajax 数据更新

    $(function(){ var $personWifePs=$("#wife-money tbody tr"); var $personWife=$("#wife-m ...

  10. C# 事件 订阅与发布

    两种方式: 一: //服务器 public class Server { //服务器发布的事件 public event Action<string> MyEvent; public vo ...