标签:nes script wan mil ase rect 理解 基础 leave
#include<bits/stdc++.h>
using namespace std;
const int INF=1e9;
long long dp[1000][1000];
int a[1000];
int sum[1000];
int main()
{
int t;
int ans=0;
scanf("%d",&t);
while(t--)
{
ans++;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++)
{
sum[i]+=sum[i-1]+a[i];
}
for(int i=1;i<=100;i++)
{
for(int j=1;j<=100;j++)
{
if(j>i)
dp[i][j]=INF;
else dp[i][j]=0;
}
}
//memset(dp,0,sizeof(dp));
for( int len=1;len<=n;len++)
{
for(int i=1;i<=n;i++)
{
if(i+len-1>n) break;
if(len==1) {dp[i][i]=0; continue;}
else
{
for(int k=i;k<=i+len-1;k++)
{
long long x=dp[i+1][k]+(k-i)*a[i]+(k-i+1)*(sum[i+len-1]-sum[k])+dp[k+1][i+len-1];
dp[i][i+len-1]=min(dp[i][i+len-1],x);
}
}
}
}
//cout<<dp[2][5]<<endl;
printf("Case #%d: ",ans);
printf("%lld\n",dp[1][n]);
}
}
标签:nes script wan mil ase rect 理解 基础 leave
原文地址:http://www.cnblogs.com/Heilce/p/6547737.html