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. Redis Cluster日常操作命令梳理

    在之前的一篇文章已经介绍了Redis Cluster及其部署,下面说下Redis Cluster日常操作命令: 一.以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis: ...

  2. PAT甲题题解-1129. Recommendation System (25)-排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  3. Individual P1: Preparation

    Individual Project - Word frequency program tally the frequency of words under a directory (2 modes) ...

  4. 个人博客作业_week14

    M1/M2阶段总结 我在M1阶段负责后端代码的开发,以及协助PM,在M2阶段负责PM,在为期将近一学期的团队软件开发过程中,我深刻体会到了团队协作的重要性,以及合理分配任务的重要性,没有一个好的时间规 ...

  5. 毕业设计 之 二 PHP集成环境(Dreamweaver)使用

    毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...

  6. JUnit4 单元测试

    一. 题目简介 这次的单元测试我作了一个基本运算的程序,该程序实现了加,减,乘,除,平方,倒数的运算,该程序进行测试比较的简单,对于初步接触JUnit的我来说测试起来也比较容易理解. 二.源码的git ...

  7. Practice2 结对子之“小学四则运算”

    开发环境:Eclipse,js,css,html 程序完成的方向: 1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号.如: 2*(-4) = ...

  8. 最终版alpha阶段总结

    这是我们组最终的alpha阶段总结,我和陈汝婷虽然最后做的没有想象的好,时间也很紧急,但是真的学到很多,毕竟现在我们两个人做的活是其他组四个人做的活,其实能做到这样,哪怕这样,我们也觉得没有什么遗憾了 ...

  9. vue props 用法(转载)

    前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...

  10. PHP文件系统操作常用函数

    虽然PHP提供很多内置的文件处理函数,但是分得特别细,有一些操作需要多个函数一起使用才能达到目标,比如删除非空文件夹的所有内容,遍历文件夹等功能,下面各个函数是学习的时候整理的,有的是教程里的,有的是 ...