bzoj1055 ||P4290 [HAOI2008]玩具取名
链接
思路
区间dp
然后\(f[i][j][k]\) 区间\([i,j]\)能否变成\(k\)字符 (字符当然得转化一下)
字符的个数不多,直接暴力\(check\),暴力转移就行,\(%%gzy\)
区间dp还是挺套路模板的
只不过看着恶心,其实真不恶心
for枚举长度
for枚举起点
计算终点
for枚举中点
大力转移
代码
/**************************************************************
Problem: 1055
User: 3010651817
Language: C++
Result: Accepted
Time:404 ms
Memory:1500 kb
****************************************************************/
#include <bits/stdc++.h>
#define NO puts("The name is wrong!")
using namespace std;
const int maxn=207;
char Q[5]= {'\0','W','I','N','G'},s[maxn];
bool z[5][5][5];
int n,zhong[5],cnt;
bool f[maxn][maxn][5];
map<string,int> a;
int calc(char zz) {
if(zz=='W') return 1;
if(zz=='I') return 2;
if(zz=='N') return 3;
return 4;
}
int main() {
for(int i=1; i<=4; ++i) scanf("%d",&zhong[i]);
for(int i=1; i<=4; ++i) {
char a[3];
for(int j=1; j<=zhong[i]; ++j) {
scanf("%s",a);
z[i][calc(a[0])][calc(a[1])]=1;
}
}
scanf("%s",s+1);
n=strlen(s+1);
for(int i=1; i<=n; ++i) {
f[i][i][calc(s[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 i_=1; i_<=4; ++i_) {
if(f[i][k][i_])
//枚举并且chenk(i,k)
for(int j_=1; j_<=4; ++j_) {
if(f[k+1][j][j_]) {
//枚举并且check(k+1,j)
for(int k_=1; k_<=4; ++k_) {
if(z[k_][i_][j_]==1) {
//合并
f[i][j][k_]=1;
}
}
}
}
}
}
}
}
for(int i=1; i<=4; ++i) {
if(f[1][n][i]) {
cnt++;
printf("%c",Q[i]);
}
}
if(!cnt) NO;
return 0;
}
bzoj1055 ||P4290 [HAOI2008]玩具取名的更多相关文章
- 【BZOJ1055】[HAOI2008]玩具取名(动态规划)
[BZOJ1055][HAOI2008]玩具取名(动态规划) 题面 BZOJ 洛谷 题解 裸的区间\(dp\),设\(f[i][j][W/I/N/G]\)表示区间\([i,j]\)能否由某个字母替换过 ...
- 【bzoj1055】[HAOI2008]玩具取名
[bzoj1055][HAOI2008]玩具取名 2014年12月1日3,0111 Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名 ...
- 洛谷 P4290 [HAOI2008]玩具取名
传送门 思路 博客半年没更新了,来更新个博文吧 在\(dsr\)聚聚博客的帮助下,我用半个上午和一个中午的时间苟延残喘地完成了这道题 先是读题目读大半天,最后连个样例都看不懂 之后又是想思路,实在想不 ...
- 【BZOJ1055】[HAOI2008]玩具取名(区间DP)
[HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择\(WING\)四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用" ...
- P4290 [HAOI2008]玩具取名
传送门 $dp$ 设 $f[i][j][k]$ 表示初始为 $k$ 时,能否得到 $[i,j]$ 这一段子串 设 $pd[i][j][k]$ 表示长度为二的字符串 $ij$ 能否由 $k$ 得到 然后 ...
- DP【洛谷P4290】 [HAOI2008]玩具取名
P4290 [HAOI2008]玩具取名 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WI ...
- 洛谷 4290 [HAOI2008]玩具取名 题解
P4290 [HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用&qu ...
- 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 ...
随机推荐
- JS模块化编程(三)
AMD&CMD 对象字面量 对象字面量表示,其实就是用一对大括号括起来的键值对,也就是JavaScript 声明对象的方式 var myObject = {variableKey : vari ...
- 移除wordpress版本信息 删除无用信息
wordpress页面头部有很多无用的信息,像wordpress版本信息.feed等,如何把它们删除或不让它们先是出来呢? 将下面的代码加入到当前主题的functions.php,可以适当酌情保留 & ...
- 如何删除帝国cms面包屑导航中首页链接的/index.html
前面一篇"帝国cms面包屑导航的首页链接锚文本改成关键字"中xmyanke有写到改首页链接的方法,但是感觉比较麻烦,这里就说说如何删除帝国cms面包屑导航中首页链接的/index. ...
- Mint linux中调整屏幕亮度的方法
/********************************************************************* * Author : Samson * Date ...
- 系列解读Dropout
本文主要介绍Dropout及延伸下来的一些方法,以便更深入的理解. 想要提高CNN的表达或分类能力,最直接的方法就是采用更深的网络和更多的神经元,即deeper and wider.但是,复杂的网络也 ...
- glide从入门到精通使用
介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题.Java有牛逼轰轰的Maven和Gradle. Golang亦有godep.govendor.glide.gvt.gopac ...
- AngularJS 事件广播与接收 $emit $broadcast $on
AngularJS中的作用域scope有一个非常有层次和嵌套分明的结构. 其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承 ...
- PIMPL(一)
1 参考 <effective C++> 条款31:将文件间的编译关系降至最低 PIMPL Idiom: http://c2.com/cgi/wiki?PimplIdiom 2 什么是PI ...
- vue性能优化2--引入cdn
当我们加载页面时,需要将我们所需要的一些依赖加载到当前会话中然后再开始执行,如果我们首屏,模块比较多是,需要等待的时间会比较长,而且.浏览器内存最多执行四十个进程,需要等到加载完前面的才能执行后面的代 ...
- Codeforces 1146E Hot is Cold
题意: 给出一个序列,有两种操作: \(>\;x\) 将大于\(x\)的数全都取负 \(<\;x\) 将小于\(x\)的数全都取负 最后输出序列中的所有数最后的状态 思路: 我们先考虑对于 ...