提交时间:2023-11-14 21:17:16
运行 ID: 31082
#include<iostream> using namespace std; int m,n; int d[510]; int a[510][510]; int q[510][510]; int main() { cin>>m>>n; d[1]=0; for(int i=2;i<=m;i++){ cin>>d[i]; d[i]=d[i-1]; } for(int i=2;i<=m;i++){ for(int j=i+1;i<=m;i++){ a[i][j]=a[i][j-1]+d[j]-d[(i+j)/2]; } } for(int i=1;i<=m;i++){ for(int j=1;i<=i&&j<=n;i++){ q[i][j]=99999999; } } for(int i=1;i<=m;i++){ q[i][1]=a[1][i]; } for(int i=2;i<=m;i++){ for(int j=1;j<=i&&j<=n;j++){ for(int k=j-1;k<i;k++){ q[i][j]=min(q[i][j],q[k][j-1]+a[k+1][i]); } } } cout<<q[m][n]; return 0; }