标签: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