HDU 5115 Dire Wolf(2014亚洲区北京站现场赛)

来源:互联网 发布:mac能做什么 编辑:程序博客网 时间:2024/05/23 22:22

区间DP
注意要提交G++

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N=210;int dp[N][N],a[N],n,sum;int main(){    int T,cas=0;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        sum=0;        for(int i=1,x; i<=n; i++)        {            scanf("%d",&x);            sum+=x;        }        for(int i=1; i<=n; i++)            scanf("%d",&a[i]);        a[0]=a[n+1]=0;        memset(dp,63,sizeof(dp));        for(int i=1; i<=n; i++)        {            dp[i][i]=a[i-1]+a[i+1];            dp[i][i-1]=0;        }        dp[n+1][n]=0;        for(int l=2; l<=n; l++)            for(int i=1,j; i+l-1<=n; i++)            {                j=i+l-1;                for(int k=i; k<=j; k++)                    dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+a[i-1]+a[j+1]);                //dp[i][j]+=a[i-1]+a[j+1];            }        printf("Case #%d: %d\n",++cas,sum+dp[1][n]);    }    return 0;}
0 0