UVA - 10688 —— The Poor Giant

题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36406

题目举的那个例子有些错误。。一看就能发现并且修正的:)

这道题算是最简单的区间DP问题之一了吧~以至于我很顺畅地就写出了转移方程,算是这几天训练区间DP的结果吧:)

#include <cstdio>
#include <iostream>
#define INF 0x3f3f3f3f
using namespace std;

int dp[505][505];

int main ()
{
    int t, n, K, kase=1;
    scanf("%d", &t);
    while(t--) {
        scanf("%d%d", &n, &K);
        for(int step=1; step<n; step++) {
            for(int i=1; i+step<=n; i++) {
                int j = i+step;
                dp[i][j] = INF;
                for(int k=i; k<=j; k++) {
                    dp[i][j] = min(dp[i][j], dp[i][k-1]+dp[k+1][j]+(k+K)*(j-i+1));
                }
            }
        }
        printf("Case %d: %d\n", kase++, dp[1][n]);
    }
        
    return 0;
}

 

posted on 2016-03-29 21:57  SuperChan  阅读(220)  评论(0)    收藏  举报

导航