dp套dp

这类东西往往是内层的 dp 作为一个隐式的 DFA,然后往往可以利用前缀 min/max 或者差分之类的分析出差分数组 0/1 的性质,然后状压直接将内层的 dp 数组压成外层计数的一维,并在外层计数时更新内层的 dp。

例如,AC 自动机上 dp 可看成内层是一个显式的 DFA 的 dp套dp。

P4590 [TJOI2018]游园会

LCS(i+1,j)={LCS(i,j1)+1 (c=Bj)max{LCS(i,j),LCS(i,j1)}

其中 c 为当前第 i+1 位兑奖串我所选择的字符。

例如本题,我们在计数的时候例如固定了 i,即兑奖串的长度,向 i+1 转移的过程中,显然我们内层的 LCS 只需要上一层的 LCS 数组,以及当前所填的字符即可转移。但是直接压整个 LCS 数组是困难的!考虑差分后 di{0,1} 那么我们就可以压这个差分数组,之后大力转移出来即可。

P4484 [BJWC2018]最长上升子序列

构造排列有 2 种常用的。

  1. 从序列的第一位到最后一位逐位进行构造。但很鸡肋!因为我们没办法知道当前哪些数已经被使用过了。

  2. 按某种顺序逐个加入数,并考虑当前加入的数要插入到哪里!

那么考虑这题,你直接加,发现内层 LIS 的转移需要一个前缀 max,又因为前缀 max 的差分 0/1,因此你直接压,大力转移即可。

需要打表。


__EOF__

本文作者F x o r G
本文链接https://www.cnblogs.com/xugangfan/p/17222298.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   FxorG  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示