动态dp

基本思想
把dp写成矩阵的形式,用线段树维护,重链上每个点只保存除了重儿子以外的dp和。
转移的时候每次把重儿子的dp矩阵乘上父亲转移矩阵(这个转移矩阵中只有除了重儿子以外的信息)来得到父亲的dp矩阵。
注意:这里要满足转移前后重儿子和父亲的dp矩阵要满足是同一个格式的。
显然我们可以发现动态dp的使用条件是儿子向父亲转移的时候满足运算只有取max,min和+。

相信大家有了上面这几句话大概就会ddp了。

我就说一下具体实现,线段树上每个点存一个转移矩阵,特判叶子,叶子存一个记录dp信息的矩阵。
构造矩阵的时候沿着这样一个思路去构造。
放一个非常形象的图

posted @ 2019-01-15 21:42  Creed-qwq  阅读(140)  评论(0编辑  收藏  举报