DP of DP

将内层 DP 的结果作为外层 DP 的状态进行 DP。

P10614 BZOJ3864 Hero meet devil

考虑 LCS 的转移,\(g_{i,j}=g_{i-1,j-1}+1[s_i=t_j]\)\(g_{i,j}=\max(g_{i-1,j},g_{i,j-1})[s_i\ne t_j]\)

一个朴素的想法是,设 \(f_{i,s}\) 表示 \(T\) 的前 \(i\) 位,与 \(S\) 的 LCS 数组为 \(s\) 的方案数,转移即考虑下一位填什么。

可以进一步优化,因为 \(g_i\) 可以通过上一行生成,于是只需记最后一行的 LCS 数组。

固定 \(i\),对 \(g_i\) 差分,发现只能是 \(0/1\),于是直接状压差分数组。时间复杂度 \(\mathcal{O}(m2^{|S|})\)

P4590 [TJOI2018] 游园会

跟上题差不多,同步记录是否出现了 \(\mathtt{N}\)\(\mathtt{NO}\) 后缀即可。

posted @ 2024-09-15 16:56  xishanmeigao  阅读(5)  评论(0编辑  收藏  举报