这题感觉做法应该挺多吧,数据规模那么小。

我用DP乱搞了。。

dp0[i][j]表示字符串前i位能否组成末尾有连续j个元音字母

dp1[i][j]表示字符串前i位能否组成末尾有连续j个辅音字母

  • 我的转移方案是尽量不要出现BAD字符串。
  • 如果最后转移不过去那就说明一定会出现BAD字符串,如果可以转移到最后那就说明字符串可以出现GOOD的情况。
  • 另外,在转移过程中可以顺便得出字符串能不能出现BAD的情况。

转移写起来还挺棘手的。。

 #include<cstdio>
#include<cstring>
using namespace std;
bool vow(char ch){
return ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U';
}
bool d[][][];
int main(){
char str[];
int t;
scanf("%d",&t);
for(int cse=; cse<=t; ++cse){
scanf("%s",str+);
int n=strlen(str+);
memset(d,,sizeof(d));
d[][][]=d[][][]=;
bool bad=;
for(int i=; i<=n; ++i){
if(str[i]=='?' || vow(str[i])){
for(int j=; j<=; ++j){
if(d[][i-][j]){
d[][i][j+]=;
d[][i][]=;
}
}
if(d[][i-][]) bad=;
}
if(str[i]=='?' || !vow(str[i])){
for(int j=; j<=; ++j){
if(d[][i-][j]){
d[][i][j+]=;
d[][i][]=;
}
}
if(d[][i-][]) bad=;
}
}
bool good=;
for(int i=;i<;++i) good|=(d[][n][i]|d[][n][i]);
if(good && bad) printf("Case %d: MIXED\n",cse);
else if(good) printf("Case %d: GOOD\n",cse);
else printf("Case %d: BAD\n",cse);
}
return ;
}

LightOJ1051 Good or Bad(DP)的更多相关文章

  1. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  2. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  3. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  4. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  5. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  6. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  7. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  8. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

  9. 最长公共子序列长度(dp)

    /// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. 第15章 使用Postfix与Dovecot收发电子邮件

    章节概述: 本章节从电子邮局系统的组成角色开始讲起,了解MUA.MTA与MDA的作用,熟悉熟悉SMTP.POP3与IMAP4邮局协议. 学习postfix与dovecot服务程序的使用方法并逐条讲解配 ...

  2. ruby代码重构第二课

    (文章都是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 在第一课里提取出了相通的代码,第二课里就把常量提取出来吧 一般把常量的定义写的对应的app/mo ...

  3. PHP 上传文件和读取文件崎岖路

    今天php上传文件和读取文件没有搞出来,全靠后来大神来帮忙,总结一下:主要涉及到一下几个方面,在ubuntu下mkdir文件夹的时候要注意权限问题,一般情况下php是以一个较低的权限去执行的,所以如果 ...

  4. PCL初步使用

    转载:http://blog.csdn.net/vbskj/article/details/7819828 本次试验的目的是利用PCL库来重建地形点云数据,并进行显示.总体流程是1)把DEM数据导入P ...

  5. 对于(function(){}())和function(){}实例的作用域分析(里面有很多问题……)

    今天在群里看到一个问题,让我纠结了好一会.下面是我的分析,感觉里面还有很多问题,关于作用域还是不太理解,希望大家看到问题第一时间反馈给我,看到实在受不了的地方说几句都没关系,谢谢. 请看题: 1.对象 ...

  6. Nmap备忘单:从探索到漏洞利用(Part 2)

    这是我们的第二期NMAP备忘单(第一期在此).基本上,我们将讨论一些高级NMAP扫描的技术,我们将进行一个中间人攻击(MITM).现在,游戏开始了. TCP SYN扫描 SYN扫描是默认的且最流行的扫 ...

  7. 利用 FFmpeg palettegen paletteuse 生成接近全色的 gif 动画

    下载FFmpeg-VideoToGif-v1.0.bat.7z FFmpeg 2.6 及以上版本有效 未使用palette时 使用palette后 @echo off set inFile=2015. ...

  8. 【USACO】sprime

    有了前面的基础,做这道题真是so easy啊. 因为要分解后每个数都是素数,所以采用先生成短的素数,长的素数在短素数的基础上生成. 比如长度为1的素数只有 2 3 5 7, 那么符合要求的长度为2的素 ...

  9. struts标签--logic总结

    1. logic:empty 该标签是用来判断是否为空的.如果为空,该标签体中嵌入的内容就会被处理.该标签用于以下情况: 1)当Java对象为null时: 2)当String对象为"&quo ...

  10. Codeforces Round #321 (Div. 2)C(tree dfs)

    题意:给出一棵树,共有n个节点,其中根节点是Kefa的家,叶子是restaurant,a[i]....a[n]表示i节点是否有猫,问:Kefa要去restaurant并且不能连续经过m个有猫的节点有多 ...