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

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP,注意初始化!! 因为没记忆化,TLE了一晚上,区间DP尤其要注意不重复递归!!!!! 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ,LEN=; ][][MAXN],a[LEN],top[],ln,tp[][]; char dc[LE…
Bzoj 1055: [HAOI2008]玩具取名 (区间DP) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间动态规划和可达性DP的好题. 开始WA了几次,感到非常奇怪. 原因竟然是n被定义了char型,真是zz了. \(f[i][j][k]\)表示区间\(i\)到\(j\)可以由\(k\)这个字符是否可以转变过来. 转移的时候枚举中间点转移就好了. #include <iostream> #include <…
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Status][Discuss] Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能…
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1560  Solved: 907[Submit][Status][Discuss] Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能是由…
很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符. # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <stack> # include <map>…
1055: [HAOI2008]玩具取名 题目:传送门 简要题意: 就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个. 题解: 一开始看题有点瞎...想了想是一道超级大难题... 其实就是一个很简单的DP... 定义发f[i][j][s]:表示在字符串中i~j这个区间是否可以组合成为字符s 转移很容易就可以想出来:因为如果f[i][k][s1]==f[k+1][j][s2]==1(i<=k<=j) &&…
区间dp.记录可行性即可. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ],len; ][][],mp[][],flag; char ch1,ch2; char gt() { char tmp; scanf("%c",&tmp); ||tmp>)scanf("%c",&tmp); return tmp;…
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 我竟然都没往dp这个方向想.....百度了下看到标题是dp马上就会转移了QAQ... 设d[i,j,k]表示i~j是否能转移成k. 那么很显然.. d[i,j,k]=d[i,k,x]&&d[k+1,j,y]&&a[k,x,y],a[k,x,y]表示k能转移到xy. 然后我数组小了re..(我都开了202啦........... 然后没有判误解wa了......太sb..…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1055 分析: 比较难想的dp f[i][j][c]表示i..j能否压缩成字符c 那么怎么转移呢 如果存在i<=k<j,f[i][k][c1]=true且f[k+1][j][c2]=true且c1c2可以压缩成字符c(这个根据读入判断),那么f[i][j][c]就是true. 记忆化搜索比较好实现了.…
玩具取名 bzoj-1055 HAOI-2008 题目大意:给你一个用W,I,N,G组成的字符串,给你一些这四个字符之间的变换规则,每一个变换规则都是由一个字符变成两个字符,问这个字符串是否可能是由一个单独的字符变成的. 注释:$1\le Len\le 200$,每种字符的变换规则<=16 想法:刚看见题以为又是什么单词接龙之类的题,然后看了一眼数据范围... ...还是不会. 查了题解,发现是一个挺不常见的bool区间dp 状态:dp[i][j][c]表示[i,j]这段区间是否能变成c字符,c…
[HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择\(WING\)四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"\(WING\)"中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. 输入输出格式 输入格式: 第一行四个整数\(W.I.N.G\).表示每一个字母能由几种两个字母所替代. 接下来\(W\)行,每行两个字母,表示W可以用这两个…
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1258  Solved: 729[Submit][Status][Discuss] Description 某 人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用 “WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能…
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. Input 第一行四个整数W.I.N.G.表示每一个字母能由几种两个字母所替代.接下来W行,每行两个字母,表示W可 以用这两个字母替代.接下来I行,每行两个字母,表示I可以用这两个字母替代.接下来…
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WING"中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. Input 第一行四个整数W.I.N.G.表示每一个字母能由几种两个字母所替代. 接下来W行,每行两个字母,表示W可以用这两个字母替代. 接下来I行,每行两个字母,表示I可以用这两个字母替…
题面 题解 字符很麻烦,不妨用数字代替(比如1代表'W') const char c[5] = {0, 'W', 'I', 'N', 'G'}; 接着,像这种两个子串可以合并成另一个子串的题可以考虑区间$DP$ 设$bool$数组$f_{i,j,k}$表示区间$[l,r]$能否合成单个字符$c_k$ 于是就可以套区间$DP$的板子了 #include <map> #include <cstdio> #include <cstring> #include <algo…
[BZOJ1055][HAOI2008]玩具取名(动态规划) 题面 BZOJ 洛谷 题解 裸的区间\(dp\),设\(f[i][j][W/I/N/G]\)表示区间\([i,j]\)能否由某个字母替换过来,转移的时候枚举用哪一个变换即可. #include<iostream> #include<cstdio> #include<cstring> #include<map> using namespace std; #define MAX 222 inline…
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP dp[i][j][k] 表示区间[i,j]能否合成k #include<cstdio> #include<cstring> using namespace std; ][][]; ]; ][][]; int turn(char c) { ; ; ; ; } int main() { //freopen("name.in","r"…
P4290 [HAOI2008]玩具取名 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WING"中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. 很早以前的考试题. DP. 重点在预处理出每个区间能否凑成一个字母. 很简单,枚举断点即可. code: #include <iostream> #inclu…
... #include<bits/stdc++.h> using namespace std; int q[255]; char s[205]; char p[]={'W','I','N','G'}; int f[205][205][4],num[4]; char a[4][20][2]; bool dp(int l,int r,int k){   if(l==r)return (s[l]==p[k]);   int &res=f[l][r][k];   if(res!=-1)ret…
[bzoj1055][HAOI2008]玩具取名 2014年12月1日3,0111 Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. Input 第一行四个整数W.I.N.G.表示每一个字母能由几种两个字母所替代.接下来W行,每行两个字母,表示W可以…
目录 链接 思路 代码 链接 luogu bzoj 思路 区间dp 然后\(f[i][j][k]\) 区间\([i,j]\)能否变成\(k\)字符 (字符当然得转化一下) 字符的个数不多,直接暴力\(check\),暴力转移就行,\(%%gzy\) 区间dp还是挺套路模板的 只不过看着恶心,其实真不恶心 for枚举长度 for枚举起点 计算终点 for枚举中点 大力转移 代码 /***********************************************************…
传送门 Solution 裸区间DP Code #include <map> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define F(i,a,b) for(register int i=(a);i<=(b);i++) using…
区间DP复习 (难度排序:(A,B),(F,G,E,D,H,I,K),(C),(J,L)) 这是一个基本全在bzoj上的复习专题 没有什么可以说的,都是一些基本的dp思想 A [BZOJ1996] [Hnoi2010] chorus 合唱队 裸题 \(dp[i][j][2]\)表示区间\(i,j\)最后放的是\(i\)还是\(j\)的方案数 int n; int a[N]; ll dp[N][N][2]; int main(){ rep(i,1,n=rd()) a[i]=rd(); rep(i,…
区间DP/记忆化搜索 sigh……看了提示才想到是区间DP >_>我果然还是太弱 f[l][r][k]表示L到R这段区间能否合并成K,那么就是枚举拆分方案(从哪里断开)和组合方式(左半合成的子母+右半合成的子母 可以合成 K)了…… 记忆化搜索即可= = /************************************************************** Problem: 1055 User: Tunix Language: C++ Result: Accepted…
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1119  Solved: 653[Submit][Status][Discuss] Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能是由…
区间 \(dp\) 1.[HAOI2008]玩具取名 \(f[l][r][W/I/N/G]\) 表示区间 \([l,r]\) 中能否压缩成 \(W/I/N/G\) \(Code\ Below:\) #include <bits/stdc++.h> using namespace std; const int maxn=200+10; int n,W,I,N,G,le[maxn],fir[maxn],sec[maxn],f[maxn][maxn][4],cnt; char s[maxn]; in…
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1144  Solved: 668[Submit][Status][Discuss] Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能是由…
传送门 思路 博客半年没更新了,来更新个博文吧 在\(dsr\)聚聚博客的帮助下,我用半个上午和一个中午的时间苟延残喘地完成了这道题 先是读题目读大半天,最后连个样例都看不懂 之后又是想思路,实在想不出来,便去看了\(dsr\)学长的博客,发现是一道区间\(DP\)题 我们用\(f[i][j][k]\)来表示\(i\).\(j\)这个区间能否压缩成为\(k\)这个字符 基本框架为 枚举长度len 枚举起点i 计算终点j 枚举中点k 起点到中点的check 中点到终点的check 转移 字符不多,…
P4290 [HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WING"中任意两个字母代替,使得自己的名字能够扩充得很长. 现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. 输入格式 第一行四个整数W.I.N.G.表示每一个字母能由几种两个字母所替代. 接下来W行,每行两个字母,表示W可以用这两个字母替代. 接下来I行,每行两个字母…
Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长.现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的. Input 第一行四个整数W.I.N.G.表示每一个字母能由几种两个字母所替代.接下来W行,每行两个字母,表示W可以用这两个字母替代.接下来I行,每行两个字母,表示I可以用这两个字母替代.接下来N行,…