2014年汕头市选拔赛普级组 数数
Time Limit:10000MS Memory Limit:65536K
Case Time Limit:1000MS
Description
分析:
这道题即前缀和+单调队列
和这道假期差不多……
其实就是先预处理前缀和+单调队列模板就可了……
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long n,k,a[1000050],q[1000050],ans=-2147483647; //十年OI一场空 不开long long见祖宗
int main(){
scanf("%lld%lld",&n,&k);
for(int i=1;i<=n;i++)
{scanf("%lld",&a[i]);a[i]+=a[i-1];} //前缀和
int head=1,tail=1;
for(int i=1;i<=n;i++){
while(head<=tail&&a[i]<=a[q[tail]]) //单调队列
tail--;
q[++tail]=i; //入队
while(head<=tail&&q[head]<i-k) head++; //无法到达 出队
ans=max(ans,a[i]-a[q[head]]); //取最大值
}
printf("%lld",ans);
return 0;
}