POJ - 2018 二分+单调子段和
生活随笔
收集整理的這篇文章主要介紹了
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)倒是可以,但顯然精度沒上面好
轉載于:https://www.cnblogs.com/caturra/p/8401120.html
總結
以上是生活随笔為你收集整理的POJ - 2018 二分+单调子段和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js常用DOM操作
- 下一篇: BZOJ 1968: [Ahoi2005