rt WA代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int s[N],f[N],n,m,q[N],tail,head;
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]+=s[i-1];
}
for(int i=1;i<=n;i++){
while(tail>=head&&(f[i-1]-s[i]>=f[q[tail]-1]-s[q[tail]]))tail--;
q[++tail]=i;
while(tail>=head&&q[head]<i-m)head++;
int j=q[head];
f[i]=f[j-1]-s[j]+s[i];
}
cout<<f[n];
return 0;
}
AC代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int f[N],s[N],q[N],tail,head,n,m;
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]+=s[i-1];
}
for(int i=1;i<=n;i++){
while(tail>=head&&f[i-1]-s[i]>=f[q[tail]-1]-s[q[tail]])tail--;
q[++tail]=i;
while(tail>=head&&q[head]<i-m) head++;
int j=q[head];
f[i]=f[j-1]-s[j]+s[i];
}
cout<<f[n];
return 0;
}
这两个代码有什么区别吗