洛谷 P4290 [HAOI2008]玩具取名
洛谷 P4290 [HAOI2008]玩具取名
思路
博客半年没更新了,来更新个博文吧
在\(dsr\)聚聚博客的帮助下,我用半个上午和一个中午的时间苟延残喘地完成了这道题
先是读题目读大半天,最后连个样例都看不懂
之后又是想思路,实在想不出来,便去看了\(dsr\)学长的博客,发现是一道区间\(DP\)题
我们用\(f[i][j][k]\)来表示\(i\)、\(j\)这个区间能否压缩成为\(k\)这个字符
基本框架为
枚举长度len
枚举起点i
计算终点j
枚举中点k
起点到中点的check
中点到终点的check
转移
字符不多,所以是可以跑过去的
代码
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;
inline int read() {
char c = getchar();
int x = 0, f = 1;
for( ; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for( ; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + (c ^ 48);
return x * f;
}
int le[5], f[211][211][5];
bool z[5][5][5], flag;
char yuan[5], s[5], ss[211];
int calc(char w) {
if(w == 'W') return 1;
if(w == 'I') return 2;
if(w == 'N') return 3;
if(w == 'G') return 4;
}
int main() {
strcpy(yuan, " WING");
for(int i = 1; i <= 4; i++) le[i] = read();
for(int i = 1; i <= 4; i++) {
for(int j = 1; j <= le[i]; j++) {
scanf("%s", &s);
z[i][calc(s[0])][calc(s[1])] = 1;
}
}
scanf("%s", ss + 1);
int n = strlen(ss + 1);
for(int i = 1; i <= n; i++) f[i][i][calc(ss[i])] = 1;
for(int len = 1; len < n; len++) {//枚举长度
for(int i = 1; i <= n; i++) {//枚举起点
int j = i + len;
if(j > n) break;//终点
for(int k = i; k < j; k++) {//中点
for(int ip = 1; ip <= 4; ip++) {
if(f[i][k][ip]) {
for(int jp = 1; jp <= 4; jp++) {
if(f[k + 1][j][jp]) {
for(int kp = 1; kp <= 4; kp++) {
if(z[kp][ip][jp] == 1) {
f[i][j][kp] = 1;
}
}
}
}
}
}
}
}
}
for(int i = 1; i <= 4; i++) {
if(f[1][n][i]) {
flag = 1;
printf("%c", yuan[i]);
}
}
if(!flag) cout << "The name is wrong!\n";
return 0;
}
洛谷 P4290 [HAOI2008]玩具取名的更多相关文章
- 洛谷 4290 [HAOI2008]玩具取名 题解
P4290 [HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用&qu ...
- bzoj1055 ||P4290 [HAOI2008]玩具取名
目录 链接 思路 代码 链接 luogu bzoj 思路 区间dp 然后\(f[i][j][k]\) 区间\([i,j]\)能否变成\(k\)字符 (字符当然得转化一下) 字符的个数不多,直接暴力\( ...
- P4290 [HAOI2008]玩具取名
传送门 $dp$ 设 $f[i][j][k]$ 表示初始为 $k$ 时,能否得到 $[i,j]$ 这一段子串 设 $pd[i][j][k]$ 表示长度为二的字符串 $ij$ 能否由 $k$ 得到 然后 ...
- DP【洛谷P4290】 [HAOI2008]玩具取名
P4290 [HAOI2008]玩具取名 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WI ...
- 【BZOJ1055】[HAOI2008]玩具取名(动态规划)
[BZOJ1055][HAOI2008]玩具取名(动态规划) 题面 BZOJ 洛谷 题解 裸的区间\(dp\),设\(f[i][j][W/I/N/G]\)表示区间\([i,j]\)能否由某个字母替换过 ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- BZOJ1055: [HAOI2008]玩具取名
... #include<bits/stdc++.h> using namespace std; int q[255]; char s[205]; char p[]={'W','I','N ...
- BZOJ 1055 [HAOI2008]玩具取名
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1119 Solved: 653[Submit][Statu ...
- bzoj 1055 [HAOI2008]玩具取名(区间DP)
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1258 Solved: 729[Submit][Statu ...
随机推荐
- R语言填充空缺值
在R语言中, imputeMissings包的特点是,如果空值是数值型,则使用median代替,如果使用的是character类型,则使用mode值代替. imputeMissing中,需要的包是im ...
- 【Linux命令】ulimit设置最大文件打开数
一.简介 在Linux下有时会遇到Socket/File : Can't open so many files的问题.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默 ...
- 线程池之ScheduledThreadPoolExecutor线程池源码分析笔记
1.ScheduledThreadPoolExecutor 整体结构剖析. 1.1类图介绍 根据上面类图图可以看到Executor其实是一个工具类,里面提供了好多静态方法,根据用户选择返回不同的线程池 ...
- Gevent工作原理(转)
作者:大U哥链接:https://www.zhihu.com/question/20703476/answer/15911452来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- jetty9部署
https://blog.51cto.com/5404542/1751702 Jetty 9部署web应用 Jetty相关的文章比较少,不过官方文档挺齐全的.做下记录也是好事. jetty9跟 ...
- 将多个sass文件合并到一个文件中
将多个sass文件合并到一个文件中 应用场景:制作angular npm包的时候,定义的一些全局样式,自定义主题色这类的情况下,多个scss文件会要合并成一个文件并写到dist文件里,发布到仓库中. ...
- jquery源码问题
最近公司升级jquery版本后,原来项目中复选框的attr的使用失效,在查看了jquery的内容的时候发现版本更新,复选框的attr的使用替换成了prop,所以使用的时候出现了问题,但是涉及到的文件太 ...
- js中this关键字的作用
this中的几种情况 1.普通函数中的this window 2.构造函数中的this 是当前构造函数创建的对象在new这个构造函数的时候会在内存中创建一个对象,此时会让this指向刚创建好的这个对象 ...
- 【IPHONE开发-OBJECTC入门学习】复制对象,深浅复制
转自:http://blog.csdn.net/java886o/article/details/9046273 #import <Foundation/Foundation.h> int ...
- ActiveMQ反序列化(CVE-2015-5254) && ActiveMQ任意文件写入 (CVE-2016-3088)
ActiveMQ 反序列化漏洞(CVE-2015-5254) 漏洞详情 ActiveMQ启动后,将监听61616和8161两个端口,其中消息在61616这个端口进行传递,使用ActiveMQ这个中间件 ...