->戳我进原题

[HAOI2008]玩具取名


Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2486 Solved: 1448


Description

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

Input

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

Output

  一行字符串,该名字可能由哪些字母变形而得到。(按照WING的顺序输出)如果给的名字不能由任何一个字母
变形而得到则输出“The name is wrong!”

Sample Input

1 1 1 1
II
WW
WW
IG
IIII

Sample Output

IN

Hint

W可以变成II所以IIII可以缩成WW IN均能变成WW所以WW又可以缩成I或者N 所以最终答案应该按照“WING”的顺序输出IN

[数据范围]

\(100\)% 数据满足Len<= \(200\),W、I、N、G<= \(16\)

分析

DP,写的记忆化搜索。f[i][j][k]表示区间[i,j]能否转化成k

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[210];
int num[5],list[210][3],tot,f[210][210][5],len;
bool p;
inline int check(char i){  if(i=='W') return 1;  if(i=='I') return 2;  if(i=='N') return 3;  if(i=='G') return 4;
}
int main(){for(register int i=1;i<=4;++i) scanf("%d\n",&num[i]);  for(register int i=1;i<=4;++i){for(register int j=1;j<=num[i];++j){  char ss[5];  scanf("%s",ss);  list[++tot][0]=i;list[tot][1]=check(ss[0]);list[tot][2]=check(ss[1]);}getchar();  }  gets(s+1); len=strlen(s+1);  for(register int i=1;i<=len;++i) f[i][i][check(s[i])]=1;  for(register int i=len;i>0;--i)  for(register int j=i+1;j<=len;++j)  for(register int k=i;k<j;++k)  for(register int l=1;l<=tot;++l)  if(f[i][k][list[l][1]]&&f[k+1][j][list[l][2]]) f[i][j][list[l][0]]=1;  for(register int i=1;i<=4;++i)  if(f[1][len][i]){  p=1;  if(i==1) printf("W");  if(i==2) printf("I");  if(i==3) printf("N");  if(i==4) printf("G");  }  if(!p) printf("The name is wrong!\n");  return 0;
}  

转载于:https://www.cnblogs.com/horrigue/p/9617913.html

「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索相关推荐

  1. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1588  Solved: 925 [Submit][Sta ...

  2. bzoj1055 [HAOI2008]玩具取名 区间DP

    问题描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用"WING"中任意两个字母 ...

  3. c++ 记忆化搜索_2010/12区间动态规划及记忆化搜索

    相关发表文章:2012/12由怎样画马谈培养动漫课程教师的专业素养2012/0708通达网络中可信的n%谈网络批判性思维的养成2011/1516信息学奥赛大家谈2008/02解读高中信息技术教学理念中 ...

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

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2010  Solved: 1177 [Submit][St ...

  5. BZOJ 1055 [HAOI2008]玩具取名

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1119  Solved: 653 [Submit][Sta ...

  6. [HAOI2008]玩具取名

    [HAOI2008]玩具取名 文章目录 题目描述 输出描述: 题解 代码: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO F ...

  7. 蓝桥杯 乘积最大(区间dp+记忆化搜索)

    问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...

  8. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索

    // 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...

  9. Codeforces 1293 E. Xenon‘s Attack on the Gangs —— 树上记忆化搜索,单点加改成区间加,有丶东西

    This way 题意: 现在有一棵大小为n的树,你要往边上放0~n-2这n-1个数,定义mex(u,v)表示u到v路径上的第一个未出现的自然数,定义S 问你S最大是多少. 题解: 我感觉这道题绝不止 ...

最新文章

  1. ReactNative windows下打包生成安卓apk
  2. 【UWB】公式推导计算坐标值
  3. php 502.88,Nginx+PHP-FPM 访问出现 502错误
  4. DSP F28335的SCI模块
  5. 帆软报表登录-某些用户需要用自定义的登陆界面,有些用户用默认登录界面
  6. 中国替扎尼定行业市场供需与战略研究报告
  7. wacom linux 驱动下载,Ubuntu 8.04如何安装WACOM驱动
  8. 什么是弱网测试?为什么要进行弱网测试?怎么进行弱网测试?
  9. 修改服务器电脑mac地址,修改服务器电脑mac地址
  10. 推荐 5 个优秀的 Javascript 图标库
  11. Matlab滤波器设计与滤波器特性分析(sptool、filterdesigner)
  12. 基于StackGAN++、CycleGAN的图像生成工具,开源
  13. 微信小程序:音乐项目
  14. RTC月度小报5月 |教育aPaaS灵动课堂升级、抢先体验VUE版 Agora Web SDK、声网Agora与HTC达成合作
  15. baseservlet怎么写_BaseServlet
  16. 神马笔记 版本1.8.0——删除笔记/文件夹·代码篇
  17. ZooKeeper 命令操作
  18. html如何调用js的函数返回值,CDHtmlDialog实现调用html中js函数-江湖宵小-搜狐空间...
  19. windowns server 2012 R2 启动U盘制作
  20. 抓取5W数据,解密「原价收+1.5折卖」的二手书小程序

热门文章

  1. 未来CPU内核将更简单!
  2. python turtle库画图案-python之绘制图形库turtle(转)
  3. vscode使用教程python-如何在VSCode上轻松舒适的配置Python的方法步骤
  4. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
  5. python入门有基础-Python入门学习难吗,新手如何学习
  6. python自学步骤-学习Python最正确的步骤(0基础必备)
  7. python编程自学能学会吗-python编程还能自学?怎么能学好? - 【大连东软睿道】
  8. python教程txt免费下载-python编程从入门到实践PDF电子书教程免费下载
  9. 下面不属于python第三方库的安装方法的是-Python第三方库安装和卸载
  10. python3爬虫实例-python3 网络爬虫 实例1