【题解】P4751 【模板】动态 DP(加强版)

考虑使用 dp 处理树上最大独立集。
树剖,然后 \(f_u=g_{u} \oplus f_{son_u}\),其中 \(\oplus\) 表示信息的合并。
可以将 \(g_u\) 写作一个 \((\max,+)\) 矩阵,然后一个点的 \(f_u\) 值可以通过计算其重链后缀矩阵积得到。注意其实这里矩阵是可以有逆元的。

然后上全局平衡二叉树,以 \(u\) 的轻子树大小作为分治权重,做序列带权分治,这样时间复杂度变成 \(\log_{\varphi}\)。对于 \(\log_2\) 的好像看不太懂。

\(g_0=\sum_{v\ne son} \max(f_{v,0},f_{v,1}),g_1=\sum_{v\ne son} f_{v,0}\)

转移矩阵是

\[\begin{bmatrix} g_0 & g_0\\ g_1+a_u & -\infty \end{bmatrix} \times \begin{bmatrix} f_{son,0}\\ f_{son,1} \end{bmatrix} = \begin{bmatrix} f_{u,0}\\ f_{u,1} \end{bmatrix} \]

posted @ 2026-07-24 19:21  TallBanana  阅读(14)  评论(0)    收藏  举报