1055: [HAOI2008]玩具取名

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2010  Solved: 1177
[Submit][Status][Discuss]

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

dp[i][j][1]表示区间[i, j]是否可以用字母'W'表示

dp[i][j][2]表示区间[i, j]是否可以用字母'I'表示

dp[i][j][3]表示区间[i, j]是否可以用字母'N'表示

dp[i][j][4]表示区间[i, j]是否可以用字母'G'表示(1or0)

如果dp[i][j][1]==1,dp[j+1][k][2]==1,并且'WI'可以用'N'表示,那么dp[i][k][3]=1

其它同理

复杂度O(64n^3)

#include<stdio.h>
#include<string.h>
char str[205];
int a[66], b[66], c[66], dp[205][205][5];
int Jud(char ch)
{switch(ch){case 'W':  return 1;case 'I':  return 2;case 'N':  return 3;default:  return 4;}
}
int main(void)
{int n, m, i, j, k, p;scanf("%d%d%d%d", &n, &j, &k, &p);for(i=1;i<=n;i++){scanf("%s", str+1);a[i] = Jud(str[1]);b[i] = Jud(str[2]);c[i] = 1;}for(i=n+1;i<=n+j;i++){scanf("%s", str+1);a[i] = Jud(str[1]);b[i] = Jud(str[2]);c[i] = 2;}for(i=n+j+1;i<=n+j+k;i++){scanf("%s", str+1);a[i] = Jud(str[1]);b[i] = Jud(str[2]);c[i] = 3;}for(i=n+j+k+1;i<=n+j+k+p;i++){scanf("%s", str+1);a[i] = Jud(str[1]);b[i] = Jud(str[2]);c[i] = 4;}m = n+j+k+p;scanf("%s", str+1);n = strlen(str+1);for(i=1;i<=n;i++)dp[i][i][Jud(str[i])] = 1;for(k=1;k<=n-1;k++){for(i=1;i+k<=n;i++){for(j=1;j<=i+k-1;j++){for(p=1;p<=m;p++){if(dp[i][j][a[p]] && dp[j+1][i+k][b[p]])dp[i][i+k][c[p]] = 1;}}}}if(dp[1][n][1]==0 && dp[1][n][2]==0 && dp[1][n][3]==0 && dp[1][n][4]==0)printf("The name is wrong!");if(dp[1][n][1])printf("W");if(dp[1][n][2])printf("I");if(dp[1][n][3])printf("N");if(dp[1][n][4])printf("G");printf("\n");return 0;
}

bzoj 1055: [HAOI2008]玩具取名(区间DP)相关推荐

  1. BZOJ 1055 [HAOI2008]玩具取名

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

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

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

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

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

  4. [BZOJ]1055: [HAOI2008]玩具取名

    Time Limit: 10 Sec  Memory Limit: 162 MB Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字 ...

  5. 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索

    ->戳我进原题 [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2486 Solved: 1448 Descript ...

  6. bzoj1055玩具取名——区间DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP,注意初始化!! 因为没记忆化,TLE了一晚上,区间DP尤其要注意不重复递归! ...

  7. [HAOI2008]玩具取名

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

  8. BZOJ.1032.[JSOI2007]祖码(区间DP)

    题目链接 BZOJ 洛谷 AC代码: 区间DP,f[i][j]表示消掉i~j需要的最少珠子数. 先把相邻的相同颜色的珠子合并起来. 枚举方法一样,处理一下端点可以碰撞消除的情况就行. 当然合并会出现问 ...

  9. bzoj 1042: [HAOI2008]硬币购物(dp+容斥)

    1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2555  Solved: 1537 [Submit][St ...

最新文章

  1. python的print函数
  2. 数据结构练习 00-自测1. 打印沙漏(20)
  3. SEO(搜索引擎最佳化)简介
  4. Bitmap Index
  5. .NET Core 跨平台发布(dotnet publish)
  6. mysql kill hup_kill -HUP pid
  7. CAS单点登录详细流程
  8. 异步与延迟加载JavaScript的方法
  9. httpclient 不支持国密ssl_Hyperledger Fabric成都见面会:TWGC国密改造介绍
  10. vba教程视频,VBA(基础篇+提高篇+实战篇)Excel数据处理教学视频
  11. 编译Openwrt(LEDE)for K3固件详细指南
  12. NetSetMan v3.4.1
  13. 线性表的链式存储结构详解
  14. 2.灰尘对计算机的影响,灰尘对电脑有影响不?
  15. 购买学生服务器、备案域名、搭建博客菜鸟级教程
  16. 【Vue】Vue生成二维码 Vue把url地址生成二维码手机打开 扫一扫手机端打开实战案例 vue生成二维码
  17. Python 爬虫十六式 - 第七式:正则的艺术
  18. 网络参数和Flops计算
  19. MATLAB线性回归实例 平炉炼钢
  20. 小傻蛋的妹妹跟随小甲鱼学习Python的第二十三、二十四节023、024

热门文章

  1. python工资一般多少p-5万的工资,用Python算一算少交多少税?
  2. Kaldi语音识别库linux环境下的安装和编译
  3. kafka安装使用说明
  4. Error in mounted hook: “TypeError: Cannot read property ‘init‘ of undefined“
  5. java反射 例子_java反射简单例子
  6. vue(vue-cli+vue-router)+babel+webpack项目搭建入门(三)
  7. 【java笔记】常用接口(2):Consumer接口
  8. idft重建图像 matlab_你赞成在医疗图像处理领域使用超分辨率重建技术吗?
  9. python实现网站测速软件_python实现网站友情链接查询与网站死链接查询的两个脚步...
  10. TLS certificate verification has been disabled