题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1055

区间DP,注意初始化!!

因为没记忆化,TLE了一晚上,区间DP尤其要注意不重复递归!!!!!

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const MAXN=,LEN=;
int p[][][MAXN],a[LEN],top[],ln,tp[][];
char dc[LEN];
bool can[LEN][LEN][],flag,f[],vis[LEN][LEN];
int in(char c)
{
if(c=='W')return ;
if(c=='I')return ;
if(c=='N')return ;
if(c=='G')return ;
}
char out(int x)
{
flag=;
if(x==)return 'W';
if(x==)return 'I';
if(x==)return 'N';
if(x==)return 'G';
}
void cl(int i,char c[])
{
int k1=in(c[]),k2=in(c[]);
p[k1][k2][++tp[k1][k2]]=i;
}
//void find0(int x,int y)
//{
// for(int i=1;i<=tp[x][y];i++)
// f[p[x][y][i]]=1;
//}
//void find(int l,int r,int x,int y)
//{
// for(int i=1;i<=tp[x][y];i++)
// can[l][r][p[x][y][i]]=1;
//}
void dp(int l,int r)
{
if(vis[l][r])return;//大剪枝!!!!!
vis[l][r]=;
if(r==l)
// {
// find(l,r,a[l],a[r]);
return;
// }
for(int k=l;k<r;k++)
{
dp(l,k);
dp(k+,r);
for(int x=;x<=;x++)
for(int y=;y<=;y++)
if(can[l][k][x]&&can[k+][r][y])
for(int i=;i<=tp[x][y];i++)
can[l][r][p[x][y][i]]=;
// find(l,r,x,y);
}
}
int main()
{
for(int i=;i<=;i++)
scanf("%d",&top[i]);
for(int i=;i<=;i++)
for(int j=;j<=top[i];j++)
{
cin>>dc;
cl(i,dc);
}
cin>>dc;
ln=strlen(dc);
for(int i=;i<=ln;i++)//初始化
{
can[i][i][in(dc[i-])]=;
// p[dc[i-1]][dc[i-1]][++tp[dc[i-1]][dc[i-1]]]=in(dc[i-1]);
}
for(int k=;k<ln;k++)
{
dp(,k);
dp(k+,ln);
for(int x=;x<=;x++)
for(int y=;y<=;y++)
if(can[][k][x]&&can[k+][ln][y])
for(int i=;i<=tp[x][y];i++)
f[p[x][y][i]]=;
// find0(x,y);
}
for(int i=;i<=;i++)
if(f[i])printf("%c",out(i));
if(!flag)printf("The name is wrong!");
return ;
}

bzoj1055玩具取名——区间DP的更多相关文章

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

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

  2. BZOJ1055: [HAOI2008]玩具取名[区间DP]

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

  3. 【BZOJ-1055】玩具取名 区间DP

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

  4. BZOJ 1055 玩具取名(区间DP)

    很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符. # include <cstdio> # include <cst ...

  5. bzoj1055: [HAOI2008]玩具取名(dp)

    1055: [HAOI2008]玩具取名 题目:传送门 简要题意: 就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个. 题 ...

  6. bzoj1055玩具取名

    区间dp.记录可行性即可. #include<iostream> #include<cstdio> #include<cstring> using namespac ...

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

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

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

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

  9. [bzoj1055][HAOI2008]玩具取名_区间dp

    玩具取名 bzoj-1055 HAOI-2008 题目大意:给你一个用W,I,N,G组成的字符串,给你一些这四个字符之间的变换规则,每一个变换规则都是由一个字符变成两个字符,问这个字符串是否可能是由一 ...

随机推荐

  1. 自定义 Android 钟表盘,这一篇就够了

    关于本文:本文原先在我的 CSDN 博客发布(由图片水印能发现),整理以往博客过程中,发现当时总结的很仔细,所以将其迁移到这里,希望对大家在自定义 View 方面,能有所帮助

  2. jsp 导出excel

    设置头文件 <% response.setHeader( "Pragma ", "public"); response.setHeader( " ...

  3. js 第一篇(常用交互方法)

    1. cocument.write("content") //向html 直接写入内容 2. alert("content") // 警告对话框 3. conf ...

  4. 【Caffe】源码解析----caffe.proto (转载)

    分析caffe源码,看首先看caffe.proto,是明智的选择.好吧,我不是创造者,只是搬运工. 原文地址:http://blog.csdn.net/qq_16055159/article/deta ...

  5. Swift实战(一): 剪子包袱锤ios应用

    来自十奶的大作业教学视频. http://www.swiftv.cn/course/ic2tqzob 主要了解了MVC模型. 首先是View,通过设计mainstoryboard构建UI界面,主要靠拖 ...

  6. python 基础 6.0 异常的常用形式

    一. 异常   异常既是一个时间,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在python无法正常处理程序时就会发生一个异常.异常是python对象,表示一个错误.当python ...

  7. JS基础常识理解

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. SPOJ LCS2 - Longest Common Substring II 后缀自动机 多个串的LCS

    LCS2 - Longest Common Substring II no tags  A string is finite sequence of characters over a non-emp ...

  9. COGS1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★☆   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  10. Java 内存分配全面浅析(转)

    本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java.这类文章网上有很多,但大多比较零碎.本文从认知过程角度出发,将带给读者一个系统的介绍. 进入正题前首先要知道的是Java程 ...