题目
结果:RE
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,p,a[1000005],s[1000005],f[1005][1005],g[1005][1005];
int main(){
scanf("%d%d%d",&n,&k,&p);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
s[i]=(s[i-1]+a[i])%p;
}
memset(f,0x3f3f3f3f,sizeof f);
f[0][0]=0;
for(int j=1;j<=k;j++){
g[0][j]=0;
for(int i=1;i<=n;i++){
if(f[i][j-1]<f[g[i-1][j]][j-1]){
g[i][j]=i;
}
else{
g[i][j]=g[i-1][j];
}
}
for(int i=j;i<=n;i++){
int k=g[i-1][j];
f[i][j]=f[k][j-1]+(s[i]-s[k]+p)%p;
}
}
cout<<f[n][k];
return 0;
}
悬5关,求调!