#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#define inf 1<<27
using namespace std;
int dp[105][105];
int val[105], sum[105];
int main() {
freopen("data.in", "r", stdin);
int n, t, cas = 0;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
sum[0] = 0;
for(int i = 1; i <= n; i++) {
scanf("%d", &val[i]);
sum[i] = sum[i-1] + val[i];
}
for(int i = 1; i <= n; i++)
dp[i][i] = 0;
for(int l = 1; l <= n; l++) {
for(int i = 1; i <= n-l+1; i++) {
int j = i+l-1;
dp[i][j] = 0x3f3f3f3f;
for(int k = i; k <= j; k++)
dp[i][j]=min(dp[i][j], val[i]*(k-i) + (k-i+1)*(sum[j] - sum[k]) + dp[i+1][k] + dp[k+1][j]);
}
}
printf("Case #%d: %d\n", ++cas, dp[1][n]);
}
return 0;
}
HDU 4283 You Are the One(区间DP)
最新推荐文章于 2019-08-21 21:59:25 发布