POJ - 2018 二分+单调子段和
依然是學(xué)習(xí)分析方法的一道題
求一個(gè)長(zhǎng)度為n的序列中的一個(gè)平均值最大且長(zhǎng)度不小于L的子段,輸出最大平均值
最值問(wèn)題可二分,從而轉(zhuǎn)變?yōu)榕卸ㄐ詥?wèn)題:是否存在長(zhǎng)度大于等于L且平均值大于等于mid的字段和
每個(gè)數(shù)與mid作差再轉(zhuǎn)變?yōu)榍蠓秦?fù)子段
子段和問(wèn)題應(yīng)該利用前綴和C,長(zhǎng)度大于等于L的字段和最大值可表示為
max{Aj+1 + Aj+2 ... + Ai},i-j+1-1>=L,j+1>=1
等價(jià)于
max{Ci-min{Cj}},L<=i<=n,0<=j<=i-L
注意是i=L時(shí)j=0
只要i單調(diào)遞增,j也單調(diào)遞增,可O(1)更新答案,然后不斷二分尺取即可
j+1的表示方法值得學(xué)習(xí),不然推式子會(huì)習(xí)慣性把0的可能給忘了
不得不抱怨POJ
浮點(diǎn)二分100次是WA的50次是AC,哪有這種道理
因?yàn)橹惠敵龅絺€(gè)位while(r-l>1e-5)倒是可以,但顯然精度沒(méi)上面好
轉(zhuǎn)載于:https://www.cnblogs.com/caturra/p/8401120.html
總結(jié)
以上是生活随笔為你收集整理的POJ - 2018 二分+单调子段和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: js常用DOM操作
- 下一篇: BZOJ 1968: [Ahoi2005