1055: [HAOI2008]玩具取名
Description
Input
Output
Sample Input
II
WW
WW
IG
IIII
Sample Output
HINT
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
using namespace std;
int m,n,a,b,ans,c,d,q,r,w[][];
char ch1,ch2;
bool f[][][];
string s,s1;
int main()
{
cin>>a>>b>>c>>d;
for (int i=;i<=a+b+c+d;i++)
//这里我们用一个w数组来储存读入的元素,举个例子,现在w可转换为IG,那么w[i][1]储存I,w[i][2]储存G,w[i][3]则储存w,i的取值由这两个字母是第几个被输入的决定。
if (i>a+b+c) w[i][]=;
else if (i>a+b) w[i][]=;
else if (i>a) w[i][]=;
else w[i][]=;
cin>>s1;
ch1=s1[];
ch2=s1[];
if (ch1=='W') w[i][]=; else if (ch1=='I') w[i][]=;else if (ch1=='N') w[i][]=;else if (ch1=='G') w[i][]=;
if (ch2=='W') w[i][]=; else if (ch2=='I') w[i][]=;else if (ch2=='N') w[i][]=;else if (ch2=='G') w[i][]=;
}
cin>>s;
n=s.size();
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
for (int k=;k<=;k++)
f[i][j][k]=false; //f[i][j][k]表示这段区间内能否由k转换而来。先全都初始化。
for (int i=;i<=n-;i++)//原先序列中有的先赋值为true,i从0开始是因为c++中字符串中的第一个字符储存在0号位中。
{
if (s[i]=='W') f[i+][i+][]=true;
else if (s[i]=='I') f[i+][i+][]=true;
else if (s[i]=='N') f[i+][i+][]=true;
else if (s[i]=='G') f[i+][i+][]=true;
}
for (int len=;len<=n;len++)//枚举区间长度
for (int i=;i<=n-len+;i++)//区间左边
{
r=i+len-;//区间右边
m=i;//我们通过m把区间分为两部分
while (m<=r-)//枚举m
{
for (int k=;k<=a+b+c+d;k++)//枚举那些转换公式
f[i][r][w[k][]]=(f[i][m][w[k][]])&&(f[m+][r][w[k][]])||(f[i][r][w[k][]]); //核心部分,我们去判断由m分开的区间左部分和右部分,是否刚好可以转换成w[k]这个公式的左边字母和右边字母,(即两边都为TRUE)
若可以,那么这个区间就可以是w[k][3]中的字母转换而来,赋值为TRUE。
m+=;
}
}
ans=;
for (int i=;i<=;i++)
if (f[][n][i]==true) //按顺序输出
{
if (i==) printf("W");
if (i==) printf("I");
if (i==) printf("N");
if (i==) printf("G");
ans+=;//记录是否有答案
}
if (ans==) printf("The name is wrong!");//没答案
return ;
}
唔,复杂度是O(200^3*64),不知是因为实际上没有200^3,还是数据水,还是写着10s的原因,很险地过了。。。。
1055: [HAOI2008]玩具取名的更多相关文章
- 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 ...
- Bzoj 1055: [HAOI2008]玩具取名 (区间DP)
Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可 ...
- 【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 那么怎 ...
- 1055: [HAOI2008]玩具取名 - BZOJ
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使 ...
- [BZOJ 1055] [HAOI2008] 玩具取名 【记忆化搜索】
题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Sol ...
- BZOJ 1055: [HAOI2008]玩具取名(记忆化搜索)
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 题意: 思路:记忆化搜索. #include<iostream> #include ...
- 1055. [HAOI2008]玩具取名【区间DP】
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替, ...
随机推荐
- jquery.easypiechart.js简介
此插件主要是用来统计新的访问.跳出率.服务器负载.使用的RAM等,功能很强大,带有HTML5的动画效果,效果非常炫,看效果吧easyPieChart一款新型的EASY饼图数据统计Jquery插件截图: ...
- centos 用dvd创建yum 仓库
环境:CentOS 6.0 默认的yum是以网络来安装的,在没有网络或者网速不佳的情况下,通过yum来安装软件是意见非常痛苦的事情.其实对于CentOS DVD来说,里面提供的软件就足以满足我们的需要 ...
- jdbc操作数据库
JDBC全称为:Java DataBase Connectivity(java数据库连接). SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC. 学习JD ...
- css固定div头部不随滚动条滚动
给div加浮动: position:fixed; 固定宽度,高度,距离头部,左部为0:width: 99%; height: 80px; top:0; left: 0;
- 用asp.net c# HttpWebRequest获取网页源代码
public string GetPage(string url) { HttpWebRequest request = null; HttpWebResponse response = null; ...
- python调用jar包类
#!/usr/bin/python2.7#coding:utf8import sysimport jpypeimport os.path phone_num = sys.argv[1]#jarpath ...
- struts2 xml中重定向
<result name="success" type="redirect">ManagePartAction</result> 重定向 ...
- Hadoop MapReduce编程 API入门系列之薪水统计(三十一)
不多说,直接上代码. 代码 package zhouls.bigdata.myMapReduce.SalaryCount; import java.io.IOException; import jav ...
- maven提示invalid LOC header (bad signature)的解决办法
今天执行mvn test的时候提示: 错误:读取 /home/subaochen/.m2/repository/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.ja ...
- 炫酷的时钟--canvas初体验
先啥也不说:来张效果图 我是根据:http://www.imooc.com/learn/133 这里的课程进行学习的.大大的感谢liuyubobobo老师的深入浅出的讲解!! 我在这里仅仅提供我自己的 ...