BZOJ5336 TJOI2018 party Description 小豆参加了NOI的游园会,会场上每完成一个项目就会获得一个奖章,奖章 只会是N, O, I的字样.在会场上他收集到了K个奖章组成的串. 兑奖规则是奖章串和兑奖串的最长公共子序列长度为小豆最后奖励的等级. 现在已知兑奖串长度为N,并且在兑奖串上不会出现连续三个奖章为NOI,即奖章中不会出现子串NOI. 现在小豆想知道各个奖励等级会对应多少个不同的合法兑奖串. Input 第一行两个数,N,K分别代表兑奖串的长度,小豆收集的奖章…
BZOJ5336: [TJOI2018]party https://lydsy.com/JudgeOnline/problem.php?id=5336 分析: 好题. 正常的思路是设\(f[i][j][0/1/2]\)表示前\(i\)个位置,与奖章串的\(lcs\)状态为\(j\),匹配到\(NOI\)的第几位,然后转移. 那么问题是这个\(lcs\)的状态如何存储,打个表发现这个状态数很少,实际上也是这样的,因为在匹配\(lcs\)的过程中,相邻两位\(dp\)值最多差\(1\),状态数\(2…
Description Problem 5336. -- [TJOI2018]party Solution 神奇的dp套dp... 考虑lcs的转移方程: \[ lcs[i][j]=\begin{cases} lcs[i-1][j-1]+1 & (t[i]==s[j]) \\ \max (lcs[i-1][j],lcs[i][j-1]) \end{cases}\] 我们发现 \(lcs[i][j]-lcs[i][j-1] \le 1\),而且\(\left| S \right| \le 15\)…
DP套DP,就是将内层DP的结果作为外层DP的状态进行DP的方法. [BZOJ3864]Hero meet devil 对做LCS的DP数组差分后状压,预处理出转移数组,然后直接转移即可. tr[S][k]表示当前差分状压后的状态为S,加入字符k(k为ACGT中一个)后会转移到什么状态. f[i][S]表示串已构造到第i位,和模式串的匹配状态差分后为S,的方案数. #include<cstdio> #include<cstring> #include<algorithm>…
[BZOJ5336][TJOI2018]party(动态规划) 题面 BZOJ 洛谷 题解 这题好神仙啊... 考虑普通的\(LCS\)的\(dp\),\(f[i][j]=\max\{f[i-1][j],f[i][j-1],f[i-1][j-1]+(A_i==B_j)\}\) 发现对于固定的\(i\)而言,随着\(j\)的增长,相邻的两个数之间的差不超过\(1\),因此直接考虑一个\(2^k\)的状态记录差分的结果. 那么设\(f[i][S]\)表示当前考虑到了第\(i\)位,\(LCS\)的\…
[BZOJ5337][TJOI2018]str(动态规划,哈希) 题面 BZOJ 洛谷 题解 就很呆... 显然按层\(dp\),如果能够匹配上就进行转移,直接哈希判断是否能够匹配就好了... #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MOD 1000000007 #define MAX 10010 #define ull unsigned lon…
题目分析: 这道题的难点在于要取模,而题面没有写. 容易想到一个O(1E7)的dp.KMP或者哈希得到相关位置然后对于相关位置判断上一个位置有多少种情况. 代码: #include<bits/stdc++.h> using namespace std; ; ; int n; string str; ][]; ]; ; struct hnum{ int base; unsigned ]; unsigned ]; }h[]; void read(){ ios::sync_with_stdio(fa…
https://www.lydsy.com/JudgeOnline/problem.php?id=5336 https://www.luogu.org/problemnew/show/P4590 小豆参加了NOI的游园会,会场上每完成一个项目就会获得一个奖章,奖章  只会是N, O, I的字样.在会场上他收集到了K个奖章组成的串. 兑奖规则是奖章串和兑奖串的最长公共子序列长度为小豆最后奖励的等级. 现在已知兑奖串长度为N,并且在兑奖串上不会出现连续三个奖章为NOI,即奖章中不会出现子串NOI.…
上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的增强学习). 那么如何求解最优策略呢?基本的解法有三种: 动态规划法(dynamic programming methods) 蒙特卡罗方法(Monte Carlo methods) 时间差分法(temporal difference). 动态规划法是其中最基本的算法,也是理解后续算法的基础,因此本…
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected a…