三分法(误差曲线,LA 5009)
来源:互联网 发布:祝99什么意思网络用语 编辑:程序博客网 时间:2024/04/28 10:41
一开始没想清楚。。。以为要分段然后三分。。。然后果断超时了。。。
其实由于函数是取所有凹函数的最大值,所以复合起来也是凹函数,直接在[0,1000]上三分就好了。。。
至于三分多少次的问题,有两种解决办法,
一是设eps,一旦精度足够就果断结束。
二是固定三分次数,这个次数可以根据时间复杂度算出一个可行的最大值,比如这道题,T=100,n=10000,时限3000ms,所以固定三分100次是个可行的最大值。
代码
#include<bits/stdc++.h>#define maxn 10010using namespace std;const double eps=1e-6;int n;double a[maxn],b[maxn],c[maxn];double f(double x){ double ret=a[0]*x*x+b[0]*x+c[0]; for(int i=1;i<n;i++) ret=max(ret,a[i]*x*x+b[i]*x+c[i]); return ret;}int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%lf %lf %lf",&a[i],&b[i],&c[i]); double l=0,r=1000; while(1) { double ml=l+(r-l)/3; double mr=r-(r-l)/3; double ansl=f(ml); double ansr=f(mr); if(fabs(f(l)-ansl)<eps&&fabs(f(r)-ansr)<eps) { printf("%.4lf\n",ansl); break; } if(ansl>ansr) l=ml; else r=mr; } } return 0;}
0 0
- 三分法(误差曲线,LA 5009)
- #三分法判断单峰函数最值#附加例题LA 5009
- 例题2.27 误差曲线 UVa1476
- Cogs 1500. 误差曲线(三分)
- UVALive - 5009 Error Curves (三分法)
- 三分法(洛谷3382 【模板】三分法)
- hihocoder-1142(三分法)
- [POJ3737]UmBasketella(三分法)
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- 三分法
- Java"漏洞"
- 无法加载oracle in oradb10g_home2 odbc驱动程序,系统错误代码998解决方法(转载+部分原创)
- 0~999中的水仙花数输出
- 大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战
- 【51Nod】1433 - 0和5(数学)
- 三分法(误差曲线,LA 5009)
- Docker创建镜像
- game
- Android倒计时的使用
- Oracle 12c 在AIX和HP-UX Itanium 的bug
- LintCode:打劫房屋 III
- hdu 2660 Accepted Necklace DFS
- php二维数组排序 根据某一键值排序 array_multisort
- Spring定时任务的几种实现