思路:

f[i][j][k]表示i到j匹配了字母k

if(m,n能匹配上k)

f[i][j][k]|=f[i][l][m]&f[l+1][j][n]

一个大枚举 就OK了~

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int W,I,N,G;
bool f[205][205][5],vis[5][5][5],flag;
char ch[3],goal[222];
int get(char x){
if(x=='W')return 1;
if(x=='I')return 2;
if(x=='N')return 3;
return 4;
}
int main(){
scanf("%d%d%d%d",&W,&I,&N,&G);
for(int i=1;i<=W;i++)
scanf("%s",ch),vis[1][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=I;i++)
scanf("%s",ch),vis[2][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=N;i++)
scanf("%s",ch),vis[3][get(ch[0])][get(ch[1])]=1;
for(int i=1;i<=G;i++)
scanf("%s",ch),vis[4][get(ch[0])][get(ch[1])]=1;
scanf("%s",goal+1);
int len=strlen(goal+1);
for(int i=1;i<=len;i++)f[i][i][get(goal[i])]=1;
for(int le=1;le<=len;le++)
for(int st=1;st<=len;st++){
int ed=st+le;
if(ed>len)break;
for(int k=1;k<=4;k++)
for(int l=st;l<ed;l++)
for(int m=1;m<=4;m++)
for(int n=1;n<=4;n++)
if(vis[k][m][n])
f[st][ed][k]|=f[st][l][m]&f[l+1][ed][n];
}
if(f[1][len][1])putchar('W'),flag=1;
if(f[1][len][2])putchar('I'),flag=1;
if(f[1][len][3])putchar('N'),flag=1;
if(f[1][len][4])putchar('G'),flag=1;
if(!flag)puts("The name is wrong!");
}

BZOJ 1055 DP的更多相关文章

  1. Bzoj 1055: [HAOI2008]玩具取名 (区间DP)

    Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可 ...

  2. [BZOJ 1055] [HAOI2008] 玩具取名 【记忆化搜索】

    题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Sol ...

  3. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

  4. [BZOJ 1055][HAOI2008]玩具取名(DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1055 分析: 比较难想的dp f[i][j][c]表示i..j能否压缩成字符c 那么怎 ...

  5. bzoj 1055 [HAOI2008]玩具取名(区间DP)

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1258  Solved: 729[Submit][Statu ...

  6. BZOJ 1055 区间DP

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1144  Solved: 668[Submit][Statu ...

  7. BZOJ 1055 玩具取名(区间DP)

    很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符. # include <cstdio> # include <cst ...

  8. Bzoj 1055 玩具取名(区间DP)

    题面 题解 字符很麻烦,不妨用数字代替(比如1代表'W') const char c[5] = {0, 'W', 'I', 'N', 'G'}; 接着,像这种两个子串可以合并成另一个子串的题可以考虑区 ...

  9. bzoj 1055: [HAOI2008]玩具取名【区间dp】

    不难想,就是处理起来比较麻烦 设f[i][j][k]为是否可以把区间(i,j)合并为k,初始状态是f[i][j][s[i]]=1,转移的话另一段枚举长度x,向(i-x,j),(i,j+x)转移 把四个 ...

随机推荐

  1. java后台生成图片二维码

    controller: /** * 获取登录的验证码 * @param request * @param response */ public void getLoginCode(HttpSessio ...

  2. DBCA创建数据库ORA-01034 ORACLE not available

    SYMPTOMS 在利用dbca创建数据库时,当设置完毕全部參数.開始装时 跑到2% 就报错 ORA-01034 ORACLE not available, 例如以下图 watermark/2/tex ...

  3. 在Windows上面安装多个Memcached

    在Windows上面安装多个Memcached sc create "memcached Server3" start= auto binPath= "D:\memcac ...

  4. weblogic 生产模式和开发模式的互相转换

    weblogic 生产模式和开发模式的互相转换 学习了:http://blog.csdn.net/qew110123/article/details/45845935 weblogic10.3生产模式 ...

  5. python json及mysql——读取json文件存sql、数据库日期类型转换、终端操纵mysql及python codecs读取大文件问题

    preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据.数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examp ...

  6. LeetCode【8】. String to Integer (atoi) --java实现

    String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully consider ...

  7. 黑马程序猿-----Java之你不得不知道的排序

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  8. Linux下PHP开启Oracle支持(oci8)

    使用php的常见问题是:编译php时忘记加入某扩展,后来想加入扩展,可是由于安装php后又装了一些东西如PEAR等,不想删除文件夹重装,那么此时就须要自己又一次添加某模块支持了,Linux操作系统下能 ...

  9. nyoj--108--士兵杀敌(一)(区间求和&&树状数组)

    士兵杀敌(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军现在想知 ...

  10. error C4996: 'setmode': The POSIX name for this item is deprecated解决方案

    在使用VS2012编译zlib库官方提供的案例程序 zpipe.c 中代码时报错: 信息如下: 错误 1 error C4996: 'setmode': The POSIX name for this ...