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

运行 ID: 31095

#include<bits/stdc++.h> using namespace std; int m,n; int d[510]; int a[510][510]; int q[510][510]; int c(int x,int y) { int mid=(x+y)/2,ans=0; for(int i=x;i<=y;i++){ ans+=abs(d[i]-d[mid]); } } int main() { for(int i=2;i<=m;i++){ scanf("%d",&d[i]); d[i]+=d[i-1]; } // for(int i=1;i<=m;i++){ for(int j=i;j<=m;j++){ a[i][j]=c(i,j); } cout<<endl; } // for(int i=1;i<=m;i++){ for(int j=2;j<=n&&j<=i;i++){ if(j==1) q[i][j]=a[1][j]; else { for(int k=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; }