提交时间:2023-11-14 21:35:44

运行 ID: 31092

#include<bits/stdc++.h> using namespace std; int n,m; int dtc[10001]; int dtc2[1001][1001]; int dt[10000001][10000001]; int qh(int a,int b){ int md=(a+b)/2,smt=0; for(int i=a;i<=b;i++){ smt+=abs(dtc[i]-dtc[md]); } } int main(){ cin>>n>>m; for(int i=2;i<=n;i++){ scanf("%d",&dtc[i]); dtc[i]+=dtc[i-1]; } for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++){ dtc2[i][j]=qh(i,j); } } for(int i=1;i<=n;i++){ for(int j=1;j<=m&&j<=i;j++){ if(j==1)dt[i][j]=dtc2[1][i]; else{ for(int k=1;k<i;k++){ dt[i][j]=min(dt[i][j],dt[k][j-1]+dtc2[k+1][i]); } } } } cout<<dt[n][m]; return 0; }