【题解】P3781 [SDOI2017] 切树游戏

由于值域很小,考虑动态 dp:
设集合幂级数 \(F_u\) 表示以 \(u\) 为根的连通块方案数,\(G_u\) 表示 \(\sum_{x\in \mathrm{subtree}_u} F_u\)
那么有 \(F_u=x^{a_u}\prod_{v} (F_v+1),G_u=F_u+\sum_{v} G_v\)
可以视作信息合并是 \(O(V)\) 的,以点值形式一直进行,需要维护 0 的个数。
矩阵可以只维护上三角矩阵,然后两个角上都是 1,所以可以只维护右上角 \(2\times 2\) 的矩阵。
那么上 ddp 板子做,时间复杂度 \(O(q2^2m\log n\log V)\)

把定义改为 \(F_u=1+x^{a_u}\prod_v F_v,G_u=\sum_v G_v+F_v-1\)。最后返回 \(G_1+F_1\)
\(g_1=\sum_{v\ne son} (F_v+G_v-1),g_0=\prod_{v\ne son} F_v\)

\[\begin{bmatrix} 1 & 1 & g_1-1\\ 0 & g_0x^{a_u} & 1\\ 0 & 0 & 1 \end{bmatrix} \times \begin{bmatrix} G_{son}\\ F_{son}\\ 1 \end{bmatrix} =\begin{bmatrix} G_u\\ F_u\\ 1 \end{bmatrix} \]

posted @ 2026-07-25 18:30  TallBanana  阅读(4)  评论(0)    收藏  举报