#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0x3f3f3f3f
using namespace std;
int dp[160][160],d[160],sum[160];
int main()
{
int T,t=1;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
sum[i]=sum[i-1]+d[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
dp[i][j]=INF;
for(int len=1;len<n;len++)
for(int i=1;i+len<=n;i++)
{
int j=i+len;
for(int k=1;k<=j-i+1;k++)
dp[i][j]=min(dp[i][j],d[i]*(k-1)+dp[i+1][i+k-1]+dp[i+k][j]+k*(sum[j]-sum[i+k-1]));
}
printf("Case #%d: %d\n",t++,dp[1][n]);
}
}
hdu 4283 区间DP
最新推荐文章于 2024-06-16 13:07:12 发布