POJ - 2018 二分+单调子段和
依然是学习分析方法的一道题
求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值
最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和
每个数与mid作差再转变为求非负子段
子段和问题应该利用前缀和C,长度大于等于L的字段和最大值可表示为
max{Aj+1 + Aj+2 ... + Ai},i-j+1-1>=L,j+1>=1
等价于
max{Ci-min{Cj}},L<=i<=n,0<=j<=i-L
注意是i=L时j=0
只要i单调递增,j也单调递增,可O(1)更新答案,然后不断二分尺取即可
j+1的表示方法值得学习,不然推式子会习惯性把0的可能给忘了
不得不抱怨POJ
浮点二分100次是WA的50次是AC,哪有这种道理
因为只输出到个位while(r-l>1e-5)倒是可以,但显然精度没上面好
/*H E A D*/
int n,L;
double a[maxn],b[maxn],c[maxn];
bool C(double x){rep(i,1,n) b[i]=a[i]-x;rep(i,1,n) c[i]=c[i-1]+b[i];double ans=-1e12;double mn=1e12;rep(i,L,n){mn=min(mn,c[i-L]);ans=max(ans,c[i]-mn);}return ans>=0;
}
int main(){while(~iin(n)){iin(L);rep(i,1,n) din(a[i]);double l=-1e6,r=1e6;rep(i,1,50){double mid=(l+r)/2;if(C(mid)) l=mid;else r=mid;}printf("%lld\n",(ll)(r*1000));}return 0;
}
转载于:https://www.cnblogs.com/caturra/p/8401120.html
POJ - 2018 二分+单调子段和相关推荐
- POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)
$ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...
- 【二分】Best Cow Fences(poj 2018)
Best Cow Fences poj 2018 题目大意: 给出一个正整数数列,要你求平均数最大,长度不小于M的字串,结果乘1000取整 输入样例 10 6 6 4 2 10 3 8 5 9 4 1 ...
- 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...
- Drying POJ - 3104 二分
Drying POJ - 3104 二分 http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...
- POJ 3579 二分答案
POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...
- POJ - 2018 Best Cow Fences(二分+最长连续子段和)
题目链接:点击查看 题目大意:给出n个正整数,求一个平均数最大的.长度不小于L的连续子段 题目分析:因为这个题目的答案满足二分的性质,也就是若二分的平均数小于答案,则更小的平均数肯定都满足答案(因为这 ...
- 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]
题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...
- POJ 2823-Sliding Window单调队列解题报告
链接:http://poj.org/problem?id=2823 利用单调队列的出队入队,维护区间的最值,保证队列单调递增或单调递减,要维护单调递增队列,当一个数字插入的时候,从队尾往前找到第一个比 ...
- 【题解】P1419 寻找段落(二分+单调队列)难度⭐⭐⭐★
P1419 寻找段落 首先二分答案,即:二分最大平均值. 我们将a全部减去mid,问题转化为判断是否存在一个长度在s~t范围内的区间它的和为正,如果有说明还有更大的平均值. 用前缀和和单调队列维护. ...
最新文章
- 经验分享 | 通过adbd配置漏洞在安卓设备上提升权限
- python怎么把cpu占满_如何增加python CPU使用率
- 系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)
- 利用Flutter写一个跨平台的果核APP(3)——网络请求
- java使用教程——组件及事件处理——窗口(设置窗口的颜色和背景)
- html和url两种录制方式
- AIOps中异常检测简的单应用
- 插件怎么用_【Anki插件篇】(01)插件介绍
- 怎样使用计算机上的高级共享设置,win7打印机共享怎么设置
- easyui-datagrid对行写样式
- sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
- PAT之图:遍历、最短路径dijkstra
- 黑龙江测绘局事业单位2009拟聘人员公示
- android动图状态延迟获取到,android实现牛顿摆
- ti ds90ub953 与ds90ub954 、ds90ub933的调试总结
- rk3288 android 6.0固件,RK3288固件升级教程
- Swift_代码混淆
- 尚学堂怎么样?在这里究竟给我带来了哪些收获?
- .net core webapi 将localhost改成ip地址
- 私服服务器显示关闭怎么办,《魔兽世界》私服关闭
热门文章
- 使用ABAP和JavaScript代码生成PDF文件的几种方式
- python 连通域_连通域的原理与Python实现
- java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...
- oracle日志文件打开,oracle日志文件和控制文件损坏的恢复
- 为什么至少三个哨兵_为什么需要 Redis 哨兵?
- audiorecord怎么释放_Android 开发 AudioRecord音频录制
- 没有dpkg命令_ffsend:在命令行中通过 FireFox Send 分享文件 | Linux 中国
- 全文检索技术_中药图片拍照识别系统,爬虫、深度学习技术android app 源码分享...
- 文本编辑器查看 cprintf颜色_airWriter for mac(文本编辑软件)
- 使用睡袋_睡袋能用几十年?!只要你照着做(一)