依然是学习分析方法的一道题
求一个长度为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 二分+单调子段和相关推荐

  1. POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

    $ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...

  2. 【二分】Best Cow Fences(poj 2018)

    Best Cow Fences poj 2018 题目大意: 给出一个正整数数列,要你求平均数最大,长度不小于M的字串,结果乘1000取整 输入样例 10 6 6 4 2 10 3 8 5 9 4 1 ...

  3. 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...

  4. Drying POJ - 3104 二分

    Drying    POJ - 3104  二分      http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...

  5. POJ 3579 二分答案

    POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...

  6. POJ - 2018 Best Cow Fences(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出n个正整数,求一个平均数最大的.长度不小于L的连续子段 题目分析:因为这个题目的答案满足二分的性质,也就是若二分的平均数小于答案,则更小的平均数肯定都满足答案(因为这 ...

  7. 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]

    题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...

  8. POJ 2823-Sliding Window单调队列解题报告

    链接:http://poj.org/problem?id=2823 利用单调队列的出队入队,维护区间的最值,保证队列单调递增或单调递减,要维护单调递增队列,当一个数字插入的时候,从队尾往前找到第一个比 ...

  9. 【题解】P1419 寻找段落(二分+单调队列)难度⭐⭐⭐★

    P1419 寻找段落 首先二分答案,即:二分最大平均值. 我们将a全部减去mid,问题转化为判断是否存在一个长度在s~t范围内的区间它的和为正,如果有说明还有更大的平均值. 用前缀和和单调队列维护. ...

最新文章

  1. 经验分享 | 通过adbd配置漏洞在安卓设备上提升权限
  2. python怎么把cpu占满_如何增加python CPU使用率
  3. 系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)
  4. 利用Flutter写一个跨平台的果核APP(3)——网络请求
  5. java使用教程——组件及事件处理——窗口(设置窗口的颜色和背景)
  6. html和url两种录制方式
  7. AIOps中异常检测简的单应用
  8. 插件怎么用_【Anki插件篇】(01)插件介绍
  9. 怎样使用计算机上的高级共享设置,win7打印机共享怎么设置
  10. easyui-datagrid对行写样式
  11. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  12. PAT之图:遍历、最短路径dijkstra
  13. 黑龙江测绘局事业单位2009拟聘人员公示
  14. android动图状态延迟获取到,android实现牛顿摆
  15. ti ds90ub953 与ds90ub954 、ds90ub933的调试总结
  16. rk3288 android 6.0固件,RK3288固件升级教程
  17. Swift_代码混淆
  18. 尚学堂怎么样?在这里究竟给我带来了哪些收获?
  19. .net core webapi 将localhost改成ip地址
  20. 私服服务器显示关闭怎么办,《魔兽世界》私服关闭

热门文章

  1. 使用ABAP和JavaScript代码生成PDF文件的几种方式
  2. python 连通域_连通域的原理与Python实现
  3. java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...
  4. oracle日志文件打开,oracle日志文件和控制文件损坏的恢复
  5. 为什么至少三个哨兵_为什么需要 Redis 哨兵?
  6. audiorecord怎么释放_Android 开发 AudioRecord音频录制
  7. 没有dpkg命令_ffsend:在命令行中通过 FireFox Send 分享文件 | Linux 中国
  8. 全文检索技术_中药图片拍照识别系统,爬虫、深度学习技术android app 源码分享...
  9. 文本编辑器查看 cprintf颜色_airWriter for mac(文本编辑软件)
  10. 使用睡袋_睡袋能用几十年?!只要你照着做(一)