Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] C A Weakness and Poorness (三分)
2015-09-17 09:53
375 查看
显然f(x)是个凹函数,三分即可,计算方案的时候dp一下。eps取大了会挂精度,指定循环次数才是正解。
#include<bits/stdc++.h> using namespace std; const double eps = 1e-11; const int maxn = 2e5+5; double a[maxn]; double d1[maxn],d2[maxn]; int n; inline double cal(double x) { double a1 = 0., a2 = 0.; for(int i = 1; i <= n; i++){ d1[i] = max(0.,d1[i-1])+a[i]-x; a1 = max(a1,d1[i]); d2[i] = min(0.,d2[i-1])+a[i]-x; a2 = min(a2,d2[i]); } return max(fabs(a1),fabs(a2)); } int main() { //freopen("in.txt","r",stdin); scanf("%d",&n); for(int i = 1; i <= n; i++) scanf("%lf",a+i); double L = -1e4, R = 1e4; double M1v,M2v; while(R-L>eps){ double M1 = L+(R-L)/3, M2 = L+(R-L)/3*2; M1v = cal(M1), M2v = cal(M2); if(abs(M1v-M2v)<eps){ L = M1; R = M2; }else { if(M1v > M2v){ L = M1; }else { R = M2; } } } printf("%.15lf",(cal(L)+cal(R))/2); return 0; }
相关文章推荐
- Aspose Word模板使用总结
- 基于CSS实现的4级下拉菜单效果代码
- html+css做页面如何不会乱
- 编程心得
- opencv二值图孔洞填充算法
- 怎么样查看局域网IP地址是否被占用?
- ios webView 加载本地html5
- QTP脚本不能录制解决办法
- 20150916-html第一次课
- php中数字和字母生成随机字符串
- Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 部署错误: 启动 Tomcat 失败。-- '127.0.0.1' 不是内部或外部命令,也不是可运行的程序
- ios UIWebView与JS交互
- File 文件类处理
- 使用instantclient 11 2 和PL/SQL Developer工具包连接oracle 11g远程数据库
- 指定地址声明结构体的方法,报错Unable to automatically place 解决方法
- JQuery日记6.5 Javascript异步模式(一)
- Struts 2 Namespace configuration example and explanation
- 使用Aspose.Words for Java完成复杂Word与PDF的导出
- inner join,left join,right join,full join 的区别,用例子说明
- Avoid passing null as the view root convertView = infalInflater.inflate(R.layout.list_item, null);