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. Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长.变化速度及大规模计算的需求,廉价的.高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统.Docker及 ...

  2. HTML 5 拖放

    拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 拖放事件 1. ...

  3. 关键字搜索:jQuery过滤器插件fastLiveFilter||显示结果条数

    引用js库 <script src="jquery-1.6.4.min.js"></script> <script src="jquery. ...

  4. M2阶段事后总结报告

    会议照片: 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 开发一个快捷方便的记事本App.从用户体验角度出发,在一般记事本App的基础上进行创新 ...

  5. Scrum Meeting 7

                第七次会议 No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 No_11:照片记录 待更新 No_100:代码/文档签入记录 No_101:出席表 ...

  6. Linux内核及分析 第二周 操作系统是如何工作的?

    计算机是如何工作的? 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函 ...

  7. 77 Linux commands and utilities you'll actually use

    https://searchdatacenter.techtarget.com/tutorial/77-Linux-commands-and-utilities-youll-actually-use

  8. Aspose for Maven 使用

    https://blog.aspose.com/2014/08/12/aspose-for-maven-aspose-cloud-maven-repository/ https://marketpla ...

  9. Linux CentOS7 安装php简要过程以及nginx

    Copy From  https://www.cnblogs.com/freeweb/p/5425554.html 修改了下: 1. 下载php源码: wget  http://cn2.php.net ...

  10. springMVC 使用WebApplicationContext获取ApplicationContext对象

    主要用于从application中获取bean 1.applicationContext 在web.xml中使用listener配置 <context-param> <param-n ...