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 ...
随机推荐
- short url短链接原理
一.什么是短链接 含义:就是把普通网址,转换成比较短的网址.比如:http://t.cn/RlB2PdD 这种,比如:微博:这些限制字数的应用里都用到这种技术. 优点:短.字符少.美观.便于发布.传播 ...
- sql根据某一个字段重复只取第一条数据
比如上图,取3,4行记录的第一行也就是3行,而不返回4行. 使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值 ...
- 【Python】唯品会购买商品
操作过程:唯品会进入之后,搜索商品,浏览网页,略掉不能选择的尺寸,选择之后,点击商品选择数量的加号,然后加入购物车. 实现代码如下: # coding=utf-8 from selenium impo ...
- [LeetCode] 694. Number of Distinct Islands
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- git的使用(包括创建远程仓库到上传代码到git的详细步骤以及git的一些常用命令)
A创建远程仓库到上传代码到git 1)登陆或这注册git账号 https://github.com 2)创建远程仓库 3)打开终端输入命令 cd到你的本地项目根目录下,执行如下git命令 git in ...
- redis的5种数据结构的使用场景介绍
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- linux字符处理命令 sort(部分转载)
[root@LocalWeb01 ~]# sort /etc/passwd |less (升序 ) [root@LocalWeb01 ~]# sort -r /etc/passwd |less ( ...
- LINQ的左连接、右连接、内连接和Lamda表达式实现Left join
1.左连接: var LeftJoin = from t1 in l1join t2 in l2on t1.ID equals t2.ID into Joinedt12from t3 in Joine ...
- Perl实战(一)
在Perl中,我们可以通过uc,lc,\U,\L来修改变量的值.其中uc,\U可以将变量中的字母全部转换为大写. lc,\L可以将变量中的字母全部转换为小写. $big = "\U$var& ...
- 浅谈CDN加速问题
(以百度CDN进行分析) 婆说婆有理,公说公有理.是否使用CDN,不同的工程师有不同的意见. 这里呢我来进行一下简单的分析. [正方观点] 1. 提升网站加载速度:CDN通过缓存技术提升网站打开速度, ...