1055. [HAOI2008]玩具取名【区间DP】
Description
Input
Output
Sample Input
II
WW
WW
IG
IIII
Sample Output
HINT
100%数据满足Len<=200,W、I、N、G<=16
还是对DP理解不到位
区间DP,应该大部分都是由一个小区间的状态逐渐转移
最终转移到我们需要的状态
然而我却并没有很好的认识到这点
这里我们用f[l][r][1\2\3\4]表示在l到r区间内字母1\2\3\4能否拼凑到
然后由长度短的区间往长的区间推就行
有点类似合并石子?
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int cnt[],num[];
int f[][][];
int To[][][];
int W,I,N,G;
char ch[],A[];
void init(int n,int p)
{
for (int i=;i<=n;++i)
{
scanf("%s",ch);
To[p][i][]=num[ch[]];
To[p][i][]=num[ch[]];
}
}
int main()
{
scanf("%d%d%d%d",&W,&I,&N,&G);
cnt[]=W;cnt[]=I;cnt[]=N;cnt[]=G;
num['W']=;num['I']=;num['N']=;num['G']=;
init(W,);init(I,);init(N,);init(G,);
scanf("%s",A+);
int len=strlen(A+);
for (int i=;i<=len;++i)
f[i][i][num[A[i]]]=true;
for (int k=;k<=len;++k)
for (int i=;i<=len-k;++i)//l:i r:i+k
for (int j=i;j<=i+k-;++j)
for (int l=;l<=;++l)
for (int c=;c<=cnt[l];++c)
f[i][i+k][l]=f[i][i+k][l]||(f[i][j][To[l][c][]]&&f[j+][i+k][To[l][c][]]);
bool flag=false;
if (f[][len][]) printf("W"),flag=true;
if (f[][len][]) printf("I"),flag=true;
if (f[][len][]) printf("N"),flag=true;
if (f[][len][]) printf("G"),flag=true;
if (!flag)
printf("The name is wrong!");
}
1055. [HAOI2008]玩具取名【区间DP】的更多相关文章
- Bzoj 1055: [HAOI2008]玩具取名 (区间DP)
Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可 ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- 【BZOJ】1055: [HAOI2008]玩具取名(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 我竟然都没往dp这个方向想.....百度了下看到标题是dp马上就会转移了QAQ... 设d[i ...
- [BZOJ 1055][HAOI2008]玩具取名(DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1055 分析: 比较难想的dp f[i][j][c]表示i..j能否压缩成字符c 那么怎 ...
- bzoj 1055 [HAOI2008]玩具取名(区间DP)
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1258 Solved: 729[Submit][Statu ...
- 【BZOJ-1055】玩具取名 区间DP
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1560 Solved: 907[Submit][Statu ...
- BZOJ 1055 [HAOI2008]玩具取名
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1119 Solved: 653[Submit][Statu ...
- bzoj1055: [HAOI2008]玩具取名(dp)
1055: [HAOI2008]玩具取名 题目:传送门 简要题意: 就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个. 题 ...
- BZOJ 1055 玩具取名(区间DP)
很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符. # include <cstdio> # include <cst ...
随机推荐
- mysql sql语句大全(MySQL语句 整理一)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- 悟空模式-java设计模式
目前已定义的java设计模式细分下来有二十余种,这篇博客主要是想从大家所熟知的孙悟空入手,阐述各个设计模式的概念和优缺点,以及他们之间的联系. 在下面介绍的每个设计模式里,都会有与西游记相关的具体案例 ...
- 解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错
前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" ,然后使用 jackson @ResponseBody 返 ...
- Java反射拾遗
定义:Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息.反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set ...
- xib Nib IB 可视化编程详解
简单的说,Xib就是拖控件编程,也可以说是可视化编程. 相对于代码,使用IB和xib文件来组织UI,可以省下大量代码和时间,从而得到更快的开发速度. 如果你曾经受到过微软家Visual Basic或者 ...
- thymeleaf 标签使用方法
使用thymeleaf首先添加依赖,<dependency><groupId>org.springframework.boot</groupId><artif ...
- CSS - 伪类和伪元素的区别
伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: CSS伪类 (P ...
- Java项目经验——程序员成长的钥匙
本文转载至:http://geek.csdn.net/news/detail/109880,像我这样的菜鸟应该多看几遍这样的文章,学起来才更加有动力和方向. Java就是用来做项目的!Java的主要应 ...
- ArcGis实现画矩形(RectangleFeedBack)
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) ...
- linux系统下安装ssl证书(tomcat)
1.申请ssl证书 2.下载ssl证书 打开此网址 https://myssl.com/cert_convert.html 将证书文件(xxx.com.crt)和密钥文件上传(xxx.com.key ...