思路:

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基础学习总结(7)——Object类

    一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能 ...

  2. netty学习(二)--传统的bio编程

    网络编程的基本模型是Client/Server模型.也就是两个进程之间进行相互通信,当中服务端提供位置信息( 绑定ip地址和监听port),client通过连接操作向服务端监听的地址发送连接请求,通过 ...

  3. hive查询不加分区的一个异常

    今天下午有同事反馈她提交了了一个SQL后,hive 查询就停止响应了. 我看了下,发现hiveserver确实hug住了.听过查看日志,发现了一个牛逼的SQL, 这个SQL很简单: select a. ...

  4. 为Activity生成桌面快捷方式

    有时候如果想让我们的应用在桌面上创建多个快捷方式,我们可以在Manifest.xml文件中对相应的activity进行声明. <application android:icon="@d ...

  5. 我照着NancyFx官网的demo来做为什么会有错误呢????

    我照着NancyFx官网的demo来做为什么会有错误呢???? >> csharp这个答案描述的挺清楚的:http://www.goodpm.net/postreply/csharp/10 ...

  6. dedecms后台登录,与后台界面去除多于的样式

    http://jingyan.baidu.com/article/597035520f4edc8fc00740f7.html

  7. c++几种排序算法代码

    #include <iostream> #include <vector> using namespace std; //交换int void swap(int& a, ...

  8. Java SpringMvc Jar包下载及部署方式_转载

    本次来记录一下关于 springmvc jar包的下载以及部署 首先登陆   http://repo.spring.io/release/org/springframework/spring/到里面我 ...

  9. SQL_触发器学习

    --触发器学习-------------------------------------------------------------------------------after 触发器----- ...

  10. WinDBG help

    WinDBG is a great, free tool. It is more powerful than Visual Studio's built-in debugger, but is har ...