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