【题解】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}
\]
浙公网安备 33010602011771号