洛谷P1136 迎接仪式 动态规划】的更多相关文章

显然,这是一道动归题. 我们发现,每次交换时只可能交换不同的字母(交换同类字母显然是没有意义的).那么每次交换等同于将 111 个 "j""j""j" 变为 "z""z""z",一个 zzz 变为 "j""j""j". 定义状态 dp[i][a][b]dp[i][a][b]dp[i][a][b],即考虑到第 iii 个字符,将…
P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出"欢迎欢迎欢迎欢迎--"的大字,但是领队突然发现,另一旁穿着"教"和"主"字文化衫的Orzer却不太和谐. 为了简单描述这个不和谐的队列,我们用"\(j\)"替代"教","\(z\)"替代&qu…
题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的大字,但是领队突然发现,另一旁穿着“教”和“主”字文化衫的Orzer却不太和谐. 为了简单描述这个不和谐的队列,我们用“j”替代“教”,“z”替代“主”.而一个“j”与“z”组成的序列则可以描述当前的队列.为了让教主看得尽量舒服,你必须调整队列,使得“jz”子串尽量多.每次调整你可以交换任意位置上的…
题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出“欢迎欢迎欢迎欢迎……”的大字,但是领队突然发现,另一旁穿着“教”和“主”字文化衫的Orzer却不太和谐. 为了简单描述这个不和谐的队列,我们用“j”替代“教”,“z”替代“主”.而一个“j”与“z”组成的序列则可以描述当前的队列.为了让教主看得尽量舒服,你必须调整队列,使得“jz”子串尽量多.每次调整你可以交换任意位置上的…
P1136 迎接仪式 $O(n^{2}k)$:$f[i][k]$表示到第$i$个字符为止,交换$k$次,得到的最多子串数 那么枚举位置$j$,状态可以从$f[j][k-1]+1$转移过来 $O(nk^{2})$:$f[i][j][k]$表示到第$i$个字符为止,$j$个$“j”$字符转换成$“z”$,$k$个$“z”$字符转换成$“j”$的价值. 枚举4种状态:$“zj”,"zz","jj","jz"$,分别转移即可. #include<i…
luogu P1136 迎接仪式 本题的难点是状态设计, n^2*m 的状态设计转移太过垄杂,emmmm反正我写不出来QAQ 参考了题解 /*相同字符不用调换,一个字符最多被调换一次否则会有等价多方案变换 dp[i][j][k]表示前i个字符,改变了j个'j'和k个'z'后的答案数 那么只考虑前两位,有四种情况(jj,jz,zj,zz)来转移. */ #include<cstdio> #include<cstring> #include<algorithm> using…
这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么麻烦干嘛 设f[i]为前i时间内的最大空暇时间. 这里是更新后来的状态,和以前不一样. 如果i为某个任务的开始时间,则 f[i+t-1] = max(f[i+t-1], f[i]) 也就是继承过去,取max 如果不是的话 f[i] = max(f[i], f[i-1] + 1) 加上获得的空暇时间…
题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出"欢迎欢迎欢迎欢迎--"的大字,但是领队突然发现,另一旁穿着"教"和"主"字文化衫的Orzer却不太和谐. 为了简单描述这个不和谐的队列,我们用"j"替代"教","z"替代"主".而一个"…
题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,20,20) 如果a<b并且b<c 就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c) 其它别的情况就返回w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1) 这是个简单的递归函数,但实现起来可能会有些问题.当a,b,c均为1…
没看出来动规怎么做,看到n <= 20,直接一波暴搜,过了. #include<cstdio> #include<cstring> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; const int MAXN = 25; int g[MAXN][MAXN], a[MAXN], f[MAXN]; int vis[MAXN],…