• DP专辑之线性DP


    POJ1390

    题目链接:http://poj.org/problem?id=1390

    分类:记忆化搜索  

    dp[i][j][k] 表示,从i到j块且j后面有k块与第j块的颜色一样。dp[l][r][k] = max(dp[l][r][k],dfs(l,i,k+1)+dfs(i+1,r-1,0));    

    解题思路:见黑书123页【例题1】方块消除

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn=210;
    int dp[maxn][maxn][maxn];
    int re[maxn];
    int dfs(int i,int j,int k)
    {
        if(i>j)   return 0;
        if(dp[i][j][k])   return dp[i][j][k];
        dp[i][j][k]=dfs(i,j-1,0)+(1+k)*(1+k);
        for(int p=j-1;p>=i;p--)
            if(re[p]==re[j])
            dp[i][j][k]=max(dp[i][j][k],dfs(i,p,k+1)+dfs(p+1,j-1,0));
        return dp[i][j][k];
    }
    int main()
    {
        int T,n;
        cin>>T;
        for(int cas=1;cas<=T;cas++)
        {
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%d",&re[i]);
            memset(dp,0,sizeof(dp));
            printf("Case %d: %d
    ",cas,dfs(1,n,0));
        }
        return 0;
    }
    


  • 相关阅读:
    FastAdmin Shopro商城安装
    MYSQL ERROR 10060
    宝塔命令
    kdevtmpfsi挖矿病毒处理
    VUE安装
    原生JS请求(AJAX)
    Bootstrap: 模态框组件
    Bootstrap: 缩略图组件
    Bootstrap: 栅格系统
    Bootstrap: 下拉菜单组件 & 分页组件
  • 原文地址:https://www.cnblogs.com/wolf940509/p/6617131.html
Copyright © 2020-2023  润新知