题目大意:给定一个由‘W','I','N','G'构成的字符串。给定一些规则。这些规则能够将两个字符合成为一个,比如"II"能够合成为'W',"WW"能够合成为'I'或者'N'

求这个字符串能够终于合成为哪几种字符

看到这题我想到了广搜。

。。事实上不是必需,动归全然能够解决

令f[i][j][k]为从i開始的j个字符能否够合成为字符[k]

然后j从外层循环。剩下的所有预处理,怎么暴力怎么转移。我写了六层循环,有点吓人

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 210
using namespace std;
int n,W,I,N,G;
int trans[4][4][4];
bool f[M][M][4],flag;
char s[M],table[5]="WING";
inline int GetInt(char c)
{
switch(c)
{
case 'W':return 0;
case 'I':return 1;
case 'N':return 2;
case 'G':return 3;
}
}
inline void Input(int p)
{
int x,y;
char c[2];
scanf("%s",c);
x=GetInt(c[0]);
y=GetInt(c[1]);
trans[x][y][p]=1;
}
int main()
{
int i,j,k,c1,c2,c3;
cin>>W>>I>>N>>G;
for(i=1;i<=W;i++)
Input(0);
for(i=1;i<=I;i++)
Input(1);
for(i=1;i<=N;i++)
Input(2);
for(i=1;i<=G;i++)
Input(3);
scanf("%s",s+1);
n=strlen(s+1);
for(i=1;i<=n;i++)
f[i][1][ GetInt(s[i]) ]=1;
for(j=2;j<=n;j++)
for(i=1;i+j-1<=n;i++)
for(k=i;k<i+j-1;k++)
for(c1=0;c1<4;c1++)
if(f[i][k-i+1][c1])
for(c2=0;c2<4;c2++)
if(f[k+1][i+j-1-k][c2])
for(c3=0;c3<4;c3++)
if(trans[c1][c2][c3])
f[i][j][c3]=1;
for(i=0;i<4;i++)
if(f[1][n][i])
flag=1,putchar(table[i]);
if(!flag)
puts("The name is wrong!");
}

BZOJ 1055 HAOI2008 玩具取名 动态规划的更多相关文章

  1. Bzoj 1055: [HAOI2008]玩具取名 (区间DP)

    Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可 ...

  2. BZOJ 1055 [HAOI2008]玩具取名

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1119  Solved: 653[Submit][Statu ...

  3. bzoj 1055 [HAOI2008]玩具取名(区间DP)

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1258  Solved: 729[Submit][Statu ...

  4. [BZOJ 1055] [HAOI2008] 玩具取名 【记忆化搜索】

    题目链接:BZOJ - 1055 题目分析 这种类似区间 DP 的记忆化搜索都是很相近的,比如字符串压缩和字符串扩展都差不多. 都是将现在 Solve 的区间分成子区间,再求解子区间. 这道题 Sol ...

  5. [BZOJ 1055][HAOI2008]玩具取名(DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1055 分析: 比较难想的dp f[i][j][c]表示i..j能否压缩成字符c 那么怎 ...

  6. BZOJ 1055: [HAOI2008]玩具取名(记忆化搜索)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1055 题意: 思路:记忆化搜索. #include<iostream> #include ...

  7. [LUOGU] P4290 [BZOJ] 1055 [HAOI2008]玩具取名

    题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WING"中任意两个字母代 ...

  8. bzoj 1055: [HAOI2008]玩具取名【区间dp】

    不难想,就是处理起来比较麻烦 设f[i][j][k]为是否可以把区间(i,j)合并为k,初始状态是f[i][j][s[i]]=1,转移的话另一段枚举长度x,向(i-x,j),(i,j+x)转移 把四个 ...

  9. 【BZOJ】1055: [HAOI2008]玩具取名(dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1055 我竟然都没往dp这个方向想.....百度了下看到标题是dp马上就会转移了QAQ... 设d[i ...

随机推荐

  1. Format a Hard Drive in Csharp

    Article Author(s): Audric Thevenet All Rights Reserved. Here's how to format hard drives, floppies, ...

  2. myBatis参数处理 myBatis佟刚课程笔记

    单个参数:myBatis不会做特殊处理 #{参数名}: 取出参数值 多个参数: myBatis会做特殊处理 多个参数会被封装成一个MAP key:param1 param2.... param10,或 ...

  3. JavaEE-04 数据源配置

    学习要点 JNDI 数据库连接池 完成新闻发布系统数据库连接池 JNDI 说明 JNDI(Java Naming and Directory Interface),中文翻译为Java命名与目录接口,是 ...

  4. IntelliJ IDEA集成工具Database连接MySQL8.0报错的解决方法

    直接用默认配置连接的话,会报以下错误: Connection to MySQL - @localhost failed. [08001] Could not create connection to ...

  5. Java任务执行计时

    Long startTime = System.currentTimeMillis(); Long endTime = System.currentTimeMillis(); endTime-star ...

  6. CSS中列表项list样式

    CSS列表属性 属性 描述 list-style-属性 用于把所有用于列表的属性设置于一个声明中. list-style-image 将图象设置为列表项标志. list-style-position ...

  7. 交叉编译OpenCV的教程——基于aarch64-linux-gnu的交叉编译器

    1.获取OpenCV3.3.1的源码 地址:https://pan.baidu.com/s/1lnKDThiWg-2QDXNEzVAqrA 提取码:vmn4 2.解压源码包 命令:unzip open ...

  8. HDU1116(欧拉路径+并查集)

    题意: 给出一些字符串,有这两个字符串,如果第一个字符串的最后一个字母和第二个字符串的第一个字母是一样的,则这两个字符串是可以连接在一起的. 问给出的这些字符串能否串成一个环或者一整个链. 思路: 将 ...

  9. 洛谷P1421 小玉买文具

    这道题其实就是编程最基础的逻辑,没什么好讲的输入,输出就完了,非常简单! code: #include<cstdio> #include<iostream> using nam ...

  10. thinkphp5实现文件上传

    原理:通过form表单的enctype = "multipart / form-data"属性将文件临时放在htdocs文件夹的tmp目录下,再通过后台的程序将文件保存在自己设定的 ...