zoukankan      html  css  js  c++  java
  • 【LightOJ 1422】Halloween Costumes(区间DP)

    题意

    告诉我们每天要穿第几号衣服,规定可以套好多衣服,所以每天可以套上一件新的该号衣服,也可以脱掉一直到该号衣服在最外面。求最少需要几件衣服。

    分析

    DP,dp[i][j]表示第i天到第j天不脱第i天之前的衣服最少需要的衣服数量,那就可以由和第j天穿一样的衣服的第k天转移过来,或者再套一件第j天的衣服。

    状态转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j-1],dp[i][j-1]+1)(i≤k<j,a[j]==a[k])

    算的时候i从大到小算,因为算dp[i][j]时用到了比 i 更大的 k+1 的dp[k+1][j-1]。

    代码

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int t,n,a[105],dp[105][105];
    int main()
    {
        scanf("%d",&t);
        for(int l=1; l<=t; l++)
        {
            scanf("%d",&n);
            for(int i=1; i<=n; i++)
            {
                scanf("%d",&a[i]);
                dp[i][i]=1;
            }
            for(int i=n-1; i>0; i--)
            {
                for(int j=i+1; j<=n; j++)
                {
                    dp[i][j]=dp[i][j-1]+1;
                    for(int k=i; k<j-1; k++)
                    {
                        if(a[j]==a[k])
                        {
                            dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1]);
                        }
                    }
    
                }
            }
            printf("Case %d: %d
    ",l,dp[1][n]);
        }
        return 0;
    }
  • 相关阅读:
    mkdir命令
    pwd命令
    chmod命令
    chown命令
    chgrp命令
    687. Longest Univalue Path
    HYSBZ 1036 树的统计Count (水题树链剖分)
    POJ 3709 K-Anonymous Sequence (斜率优化DP)
    LightOJ 1065 Island of Survival (概率DP?)
    LightOJ 1248 Dice (III) (水题,期望DP)
  • 原文地址:https://www.cnblogs.com/flipped/p/5193822.html
Copyright © 2011-2022 走看看