水题大失败

原题:

某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长。
现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的。

第一行四个整数W、I、N、G。表示每一个字母能由几种两个字母所替代。
接下来W行,每行两个字母,表示W可以用这两个字母替代。
接下来I行,每行两个字母,表示I可以用这两个字母替代。
接下来N行,每行两个字母,表示N可以用这两个字母替代。
接下来G行,每行两个字母,表示G可以用这两个字母替代。
最后一行一个长度不超过Len的字符串。表示这个玩具的名字

如果给的名字不能由任何一个字母变形而得到则输出“The name is wrong!”

Len<=200,W、I、N、G<=16

因为之前水了几道HAOI的题,所以这次想了想直接开始码dfs,然后呵呵

然后上网搜题解了……

然后发现是区间DP,然后就又很水了……

用f[i][j][k]表示从i到j可以变成k

区间DP即可

注意无解

代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int mf[]; char _f[];
int b[]; bool a[][][];
int t[],lt=; char _t[];
bool f[][][];
int main(){//freopen("ddd.in","r",stdin);
memset(f,,sizeof(f));
memset(a,,sizeof(a));
mf['W']=,mf['I']=,mf['N']=,mf['G']=;
for(int i=;i<=;i++) cin>>b[i];
for(int k=;k<=;k++)
for(int i=;i<=b[k];i++){
char _ch=getchar(); while(_ch!='W'&&_ch!='I'&&_ch!='N'&&_ch!='G')_ch=getchar();
a[k][mf[_ch]][mf[getchar()]]=true;
}
scanf("%s",_t+); lt=strlen(_t+);
for(int i=;i<=lt;i++){ t[i]=mf[_t[i]]; f[t[i]][i][i]=true;}
/*for(int i=1;i<lt;i++)
for(int j=1;j<=4;j++)
f[j][i][i+1]=a[j][t[i]][t[i+1]];*/
for(int l=;l<=lt;l++)
for(int i=;i<=lt-l+;i++){
int j=i+l-;
for(int h=i;h<=j-;h++)
for(int p=;p<=;p++)if(f[p][i][h])
for(int q=;q<=;q++)if(f[q][h+][j])
for(int k=;k<=;k++)if(a[k][p][q])
f[k][i][j]=true;
}
_f[]='W',_f[]='I',_f[]='N',_f[]='G';
bool flag=false;
for(int i=;i<=;i++)if(f[i][][lt]) cout<<_f[i],flag=true;
if(!flag) cout<<"The name is wrong!"<<endl;
cout<<endl;
return ;
}

最新文章

  1. 数据库为什么要用B+树结构--MySQL索引结构的实现
  2. 02-编写第一个C语言程序
  3. 第三章:模块加载系统(requirejs)
  4. scala-spark练手--dataframe数据可视化初稿
  5. bzoj 1069 [SCOI2007]最大土地面积(旋转卡壳)
  6. Java study 1:The note of studying Socket which based UDP
  7. [Oracle] Listener的动态注册
  8. 0 and 1
  9. Java--集合(一)
  10. python的logging模块
  11. ubuntu下安装mongodb
  12. C#常用的网络组件
  13. 如何在Qt中使用自定义数据类型
  14. Vue入门笔记(二)--基础部分之条件渲染
  15. linux中iptables配置文件及命令详解
  16. cmd远程连接oracle数据库
  17. Bootloader升级方式一————擦、写flash在RAM中运行
  18. qhfl-2 ContentType组件
  19. UOJ.386.[UNR #3]鸽子固定器(贪心 链表)
  20. VMware Lab setup - A virtualized lab for testing HA and DRS

热门文章

  1. C#将集合和Json格式互相转换的几种方式
  2. Java EE、Java SE和Java ME
  3. python模块——socket (实现简单的C/S架构端通信操作CMD)
  4. 百度定位SDK
  5. Krapno 1
  6. bzoj3262: 陌上花开 三维偏序cdq分治
  7. 字符串 dfs
  8. JS水平移动图片
  9. != 比 &amp; 的优先级高
  10. 随机产生div背景颜色变化