【bzoj4385】[POI2015]Wilcze doły
生活随笔
收集整理的這篇文章主要介紹了
【bzoj4385】[POI2015]Wilcze doły
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
單調隊列掃描,記錄當前區間長度為d的一段的和的最大值,和當前區間和。
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> using namespace std;typedef long long LL; typedef double DB;#define INF 0x7fffffff #define N 2000010 #define eps 1e-8LL n,p,d; LL ans; LL s,s1; LL l,r,cnt;LL v[N],t[N],q[N];int main() {scanf("%lld%lld%lld",&n,&p,&d);ans=d;for (int i=0;i<n;i++)scanf("%lld",&v[i]);for (int i=0;i<d;i++)s1+=v[i];s=q[r++]=s1;for (int i=d;i<n;i++){s+=v[i];s1+=v[i]-v[i-d];while (l<r && q[r-1]<s1)--r;t[r]=i-d+1;q[r++]=s1;while (s-q[l]>p){s-=v[cnt++];while (l<r && t[l]<cnt)++l;}LL L=i-cnt+1;ans=max(ans,L);}printf("%lld",ans);return 0; }
轉載于:https://www.cnblogs.com/yangjiyuan/p/5547837.html
總結
以上是生活随笔為你收集整理的【bzoj4385】[POI2015]Wilcze doły的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codis 部署和测试
- 下一篇: 【转】家庭装修预算计算公式大全