zoukankan      html  css  js  c++  java
  • lightoj 1422【区间DP·分类区间首元素的情况】

    题意:
    给你n天分别要穿的衣服种类,可以套着穿,
    一旦脱下来就不能再穿,求n天至少要几件。

    思路:
    区间DP
    dp[i][j]代表i到j需要至少几件衣服
    第i天的衣服在第i天穿上了,dp[i][j]=dp[i+1][j]+1,

    枚举区间(i,j],如果有第k天的衣服=第i天的,考虑第i件衣服在在第i天没穿(因为穿上了,第k天还需要穿么?)dp[i][j]=dp[i+1,k-1]+dp[k,j];

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    typedef pair<int,int>PII;
    const double eps=1e-5;
    const double pi=acos(-1.0);
    const int INF=0x3f3f3f3f;
    const int N=1e2+10;
    int n,a[N];
    int dp[N][N];
    
    int main()
    {
        int T,cas=1;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d",&a[i]);
    
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++)
                dp[i][i]=1;
            for(int i=n-1;i>=1;i--)
            {
                for(int j=i+1;j<=n;j++)
                {
                    dp[i][j]=dp[i+1][j]+1;
                    for(int k=i+1;k<=j;k++)
                    {
                        if(a[i]==a[k])
                            dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k][j]);
                    }
                }
            }
            printf("Case %d: %d
    ",cas++,dp[1][n]);
        }
        return 0;
    }
    
    
    



  • 相关阅读:
    HTTPS 深入浅出
    Elasticsearch Analyzer 的内部机制
    Elasticsearch 查看token分析过程
    elasticsearch教程大全
    【DDD】领域驱动设计实践 —— 框架实现
    阿里盒马领域驱动设计实践
    kubernetic
    安装k8s dashboard
    单机版kubernetes1.13安装
    Kubernetes踩坑记录
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777489.html
Copyright © 2011-2022 走看看