P1880过了,这个没过?
#include<bits/stdc++.h>
#define N 610
using namespace std;
int a[N],sum[N],dp[N][N];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i+n]=a[i];
}
for(int i=1;i<=n<<1;i++)
{
dp[i][i] = 0;
sum[i] = sum[i-1]+a[i];
}
for(int l=2;l<=n;l++)
{
for(int i=1,j=l;i+l-1<=n<<1;i++,j=i+l-1)
{
dp[i][j] = INT_MAX;
for(int k=i;k<j;k++)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);
}
}
int ans=INT_MAX;
for(int i=1;i<=n;i++)
ans = min(ans,dp[i][i+n-1]);
printf("%d\n",ans);
return 0;
}