zoukankan      html  css  js  c++  java
  • A Color Game

    题目大意:  给定一个只包含七种字母的字符串,如果满足一段连续相同的字符长度大于等于K那么即可消除,问最后能不能变为空字符。

    题解:很明显是用区间dp来解决,我们设dp[l][r][k]代表的是在[l,r]区间里消去其他字符后K字符的个数。如果不存在那么赋值-INF。具体细节见代码。

    AC_code:

     1 int id[100];
     2 int dp[550][550][8],m;//表示 l r 区间消去其他颜色的球还剩下k颜色球的数量
     3 string t="ARGBCMYK";
     4 char s[550];
     5 void run(){
     6     cin>>(s+1)>>m;
     7     int n=strlen(s+1);
     8     if(m==1) {  //特殊情况单独考虑
     9         puts("Yes") ;
    10         return ;
    11     }
    12     rep(i,1,t.size()-1) id[t[i]]=i;
    13     mem(dp,-inf);
    14     rep(i,1,n) dp[i][i][id[s[i]]]=1;
    15     rep(len,2,n) rep(l,1,n+1-len){
    16         int r=l+len-1;bool flag=0;
    17         rep(i,l,r-1){
    18             rep(k,1,7){
    19                 dp[l][r][k]=max(dp[l][r][k],dp[l][i][k]+dp[i+1][r][k]);
    20                 if(dp[l][r][k]>=m) flag=1;
    21             }
    22         }
    23         rep(k,1,7) if(dp[l][r][k]<0&&flag) dp[l][r][k]=0;
    24     }
    25     rep(i,1,7) if(dp[1][n][i]>=m) {
    26         puts("Yes");
    27         return;
    28     }
    29     puts("No");
    30 }
  • 相关阅读:
    OCP-1Z0-052-V8.02-157题
    OCP-1Z0-052-V8.02-72题
    error C2061: 语法错误 : 标识符“_DebugHeapTag”
    OCP-1Z0-052-V8.02-23题
    OCP-1Z0-052-V8.02-77题
    vc2005 使用Boost库的编译步骤.
    OCP-1Z0-052-V8.02-79题
    OCP-1Z0-052-V8.02-82题
    OCP-1Z0-052-V8.02-81题
    OCP-1Z0-052-V8.02-80题
  • 原文地址:https://www.cnblogs.com/zpj61/p/14532446.html
Copyright © 2011-2022 走看看