#include<bits/stdc++.h>
using namespace std;
const int inf=1<<24;
int main()
{
int _,__,i,j,k,n,t,ans,a[100+5],sum[100+5],dp[100+5][100+5];
scanf("%d",&_);
for(__=1; __<=_; __++)
{
scanf("%d",&n);
sum[0]=0;
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
}
memset(dp,0,sizeof(dp));
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
dp[i][j]=inf;
for(t=1; t<=n; t++)
{
for(i=1; i<=n-t+1; i++)
{
j=i+t-1;
for(k=1; k<=t; k++)
{
dp[i][j]=min(dp[i][j],dp[i+1][i+k-1]+dp[i+k][j]+a[i]*(k-1)+(sum[j]-sum[i+k-1])*k);
}
}
}
printf("Case #%d: %d\n",__,dp[1][n]);
}
return 0;
}
hdu 4283 You Are the One 区间dp
最新推荐文章于 2024-02-01 00:52:38 发布