日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

POJ - 2018 二分+单调子段和

發(fā)布時(shí)間:2023/12/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - 2018 二分+单调子段和 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

依然是學(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)上面好

/*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; }

轉(zhuǎn)載于:https://www.cnblogs.com/caturra/p/8401120.html

總結(jié)

以上是生活随笔為你收集整理的POJ - 2018 二分+单调子段和的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。