dp套dp

听起来很高级。
考虑普通的dp
常常是 f i f_{i} fi f i − 1 f_{i-1} fi1通过转移T来的这样的形式。
下标之间的转移很方便。
有时 f i f_{i} fi的这个 i i i想知道从哪里转移过来不像上面那么容易。
需要把 i i i视作另一个dp中某个状态的值。而它在另一个dp中又一个值为j的状态通过T转移而来。
此时就在外层dp中让 f i f_{i} fi f j f_{j} fj转移过来。

而内层循环常常不是临时计算,而是提前计算好对于任意一个i,面对转移T会转移到谁。那么可以提前构造好一个自动机。

外层dp此时可以理解为是在这个自动机上面dp。

其实这里的 f i f_i fi的i并不一定是一个值,它可以是很多状态的答案状压后的值。

这有什么用呢。
通常的考法是一般就是为满足某种状态的东西dp计数。
这里的“某种状态”其实就是上面的i。

最常见的其实是关于lcs。
例如TJOI2018 游园会。
这里定义的是 f i , s t f_{i,st} fi,st表示能与这个串的每一位的lcs长度的状态是st的长度为i的合法字符串数量。

更复杂的,参考ZJOI2019 麻将。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值