RT,有一些代码的单调队列似乎忽略了从第一个元素开始取 m 个的情况,比如我。
cin>>n>>m;
fr1(i,1,n){
cin>>k[i];
ans=max(ans,k[i]);
sum[i]=sum[i-1]+k[i];
}
fr1(i,1,n){
while(!q.empty()&&q.front().se<i-m){
q.pop_front();
}
// cout<<q.front().fi<<endl;
while(!q.empty()&&q.back().fi>=sum[i]){
q.pop_back();
}
q.push_back(mp(sum[i],i));
// cout<<q.front().fi<<endl;
ans=max(ans,sum[i]-q.front().fi);
}
cout<<ans<<endl;
这是我刚刚的代码,获得了 AC 的好成绩,然而当输入如下数据时会 WA。
input:
5 3
5 7 2 4 2
ans:
14
myoutput:
13
希望增加本组 Hack 数据。