题目: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. Django之sitemap

    ##########settings.py SITE_ID=1 # Application definition # taggit tag INSTALLED_APPS = [ 'myblog', ' ...

  2. HDFS源码分析心跳汇报之BPServiceActor工作线程运行流程

    在<HDFS源码分析心跳汇报之数据结构初始化>一文中,我们了解到HDFS心跳相关的BlockPoolManager.BPOfferService.BPServiceActor三者之间的关系 ...

  3. MySQL 5.7.18的安装及主从复制(主从同步)

    MySQL 5.7.18的安装与主从复制 IP 计算机名 角色 192.168.1.222 001 master 192.168.1.233 002 slave CentOS 6.9安装mysql5. ...

  4. Centos 7.0防火墙问题

    从Centos7开始,自带的防火墙从iptables更改成了firewall.一般在企业环境,出于人力和稳定性考虑,还是用成熟的技术比较稳妥. 以下是关闭firewall的方法 systemctl s ...

  5. x86 的 TSS 任务切换机制

    转自:http://blog.chinaunix.net/uid-587665-id-2732907.html [0]写在前面 segment descriptors 构建保护模式下的最基本.最根本的 ...

  6. MySQL CREATE TRIGGER (1)

    CREATE TRIGGER语法 CREATE TRIGGER trigger_name trigger_time trigger_event    ON tbl_name FOR EACH ROW ...

  7. JS基础知识再整理..........不断更新中

    1.JS的五种基本数据类型:字符串.数值.布尔.null.underfined. 2.在JS中,字符串.数值.布尔三种数据类型,有其属性和方法: 3.字符串的三种常用方法[.indexof()..su ...

  8. 【BZOJ4173】数学 欧拉函数神题

    [BZOJ4173]数学 Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N ...

  9. redis启动错误-- Creating Server TCP listening socket *:6379: listen: UnKnown error

    前提:windows server 2008.redis 3.x 今天给服务器部署redis环境,文件配置.服务安装都很顺利,可就在启动服务的时候提示 百度老半天也没找到个说到点子上的. 这里记录下解 ...

  10. 九度OJ 1167:数组排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5395 解决:1715 题目描述: 输入一个数组的值,求出各个值从小到大排序后的次序. 输入: 输入有多组数据. 每组输入的第一个数为数组的 ...