如果你来了,那就看一下这道题吧,楼主 WA0pts。
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int f[1505][1505][2];
int p[1505];
int main(){
int n,s;
cin>>n>>s;
int d=(s-1)/(n-1);
int b=s-1-(n-1)*d;
int z=n-b;
for(int i=1;i<=n;i++){
cin>>p[i];
for(int j=0;j<=b;j++){
f[i][j][0]=min(f[i-1][j][0],f[i-1][j][1])+abs(p[i]-d*(i-1-j)-(d+1)*j);
f[i][j][1]=min(f[i-1][j-1][0],f[i-1][j-1][1])+abs(p[i]-d*(i-1-(j-1))-(d+1)*(j-1));
}
}
cout<<min(f[n][b][0],f[n][b][1]);
return 0;
}