bzoj1055玩具取名——区间DP
题目: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的更多相关文章
- 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】玩具取名 区间DP
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1560 Solved: 907[Submit][Statu ...
- BZOJ 1055 玩具取名(区间DP)
很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符. # include <cstdio> # include <cst ...
- bzoj1055: [HAOI2008]玩具取名(dp)
1055: [HAOI2008]玩具取名 题目:传送门 简要题意: 就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个. 题 ...
- bzoj1055玩具取名
区间dp.记录可行性即可. #include<iostream> #include<cstdio> #include<cstring> using namespac ...
- 【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 那么怎 ...
- [bzoj1055][HAOI2008]玩具取名_区间dp
玩具取名 bzoj-1055 HAOI-2008 题目大意:给你一个用W,I,N,G组成的字符串,给你一些这四个字符之间的变换规则,每一个变换规则都是由一个字符变成两个字符,问这个字符串是否可能是由一 ...
随机推荐
- easyNetq demo
本demo包含一个类库,2个console程序 1.新建类库 MQHelper,控制台程序 consumer和proc ,控制台程序引用MQHelper 2.使用nuget安装easynwtq 和 ...
- mac环境下清理系统垃圾clearMyMac 3.9 破解版
mac环境下清理系统垃圾clearMyMac 3 轻轻松松清理好几十G的垃圾文件 下载地址 链接: https://pan.baidu.com/s/1XZbZwzhgQCnzpvQDvyQrRA 密码 ...
- 图像处理之log---log算子
在图像中,边缘可以看做是位于一阶导数较大的像素处,因此,我们可以求图像的一阶导数来确定图像的边缘,像sobel算子等一系列算子都是基于这个思想的. 但是这存在几个问题:1. 噪声的影响,在噪声点处一阶 ...
- 动态内存分配(Dynamic memory allocation)
下面的代码片段的输出是什么?为什么? 解析:这是一道动态内存分配(Dynamic memory allocation)题. 尽管不像非嵌入式计算那么常见,嵌入式系统还是有从堆(heap)中动态分 ...
- python 基础 2.1 if 流程控制(一)
一.if else 1.if 语句 if expression: //注意if后有冒号,必须有 statement(s) //相对于if缩进4个空格 注:pytho ...
- npm ERR! fatal: unable to connect to github.com
https://blog.csdn.net/baidu_30809315/article/details/86520093 git config --global url."https:// ...
- 50道JAVA基础编程练习题 - 题目
50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...
- 广播、多播和IGMP的一点记录
广播和多播:仅应用于UDP 广播分为: 1.受限的广播(255.255.255.255) 2.指向网络的广播(eg:A类网络 netid.255.255.255)主机号为全1的地址 3.指向子网的广播 ...
- nexus搭建maven私服及私服jar包上传和下载
nexus搭建maven私服及私服jar包上传和下载 标签: nexus管理maven库snapshot 2017-06-28 13:02 844人阅读 评论(0) 收藏 举报 分类: Maven(1 ...
- 《Linux 鸟哥私房菜》 第一部分 Linux文件、目录与磁盘格式
1.Linux就是内核层与系统调用接口层这2层.