无题

感觉这题太牛了,决定单独拎出来。

给定 \(n\) 个点,这 \(n\) 个点形成了 \(k\) 个连通块,每个连通块大小分别为 \(s_i\),每个连通块相当于完全图,连 \(k-1\) 条边使图连通,对于每个连通块度数为 \(d_i\),一种连边方案的权值定义为 \(\prod d_i!\),求所有合法连边方案权值和,对 998244353 取模。

\(n\leq 1e9,k\leq 7000\)

首先要知道 Prüfer序列

假设已知每个 \(d_i\),把每个连通块看作一个点,不考虑连通块大小影响,有多少种连边方案就是 Prüfer 序列的合法数量。即

\[\frac{(k-2)!}{\prod (d_i-1)} \]

相当于先把 Prüfer 序列中相同元素看作不同的就是全排列,然后求全排列再去掉相同元素影响的算重。

权值和为:

\[\frac{(k-2)!}{\prod (d_i-1)}\cdot \prod d_i! \]

考虑连通块大小的影响,那么就相当于一条边 \((u,v)\) (这里的 \(u,v\) 指两个连通块的编号)连接的方案数为 \(s_u\cdot s_v\),那么所有边连接的方案数就是 \(\prod s_u\cdot s_v\),不难发现每个 \(s_i\) 被乘了 \(d_i\) 次,所以等价于 \(\prod s_i^{d_i}\)

所以考虑连通块大小后权值和为:

\[\frac{(k-2)!}{\prod (d_i-1)}\cdot \prod s_i^{d_i}\cdot \prod d_i \\=(k-2)!\cdot \prod s_i^{d_i}\cdot d_i \]

\(\sum d_i =2(k-1)\),于是可以得出朴素的 dp (但是我考场连朴素 dp 都不会)\(f_{i,j}\) 表示前 \(i\) 个连通块 \(\sum d=j\)\(\prod s_i^{d_i}\cdot d_i\) 和,初始化 \(f_{1,i}=s_1^i\cdot i\),转移:

\[f_{i,j}=\sum_{k=1}^{j-i+1}f_{i-1,j-k}\cdot s_i^{k}\cdot k \]

这样做是 \(O(k^3)\)

后面优化不知道怎么想出来的。

\(f_{i,j-1},f_{i,j},f_{i,j+1}\) 列出来。

\[f_{i,j-1}=s_i f_{i-1,j-2}+2s_i^2 f_{i-1,j-3}+3s_i^3f_{i-1,j-4}\cdots\\ f_{i,j}=s_i f_{i-1,j-1}+2s_i^2 f_{i-1,j-2}+3s_i^3f_{i-1,j-3}\cdots\\ f_{i,j+1}=s_i f_{i-1,j}+2s_i^2 f_{i-1,j-1}+3s_i^3 f_{i-1,j-2}\cdots \]

考虑让三个式子的系数 \(ps_i^p\) 对上同一项,就是 \(f_{i,j-1}\to s_if_{i,j-1},f_{i,j+1}\to \frac{f_{i,j+1}}{s_i}\)

\[s_if_{i,j-1}=s_i^2 f_{i-1,j-2}+2s_i^3 f_{i-1,j-3}+3s_i^4f_{i-1,j-4}\cdots\\ f_{i,j}=s_i f_{i-1,j-1}+2s_i^2 f_{i-1,j-2}+3s_i^3f_{i-1,j-3}\cdots\\ \frac{f_{i,j+1}}{s_i}=f_{i-1,j}+2s_i f_{i-1,j-1}+3s_i^2 f_{i-1,j-2}\cdots \]

这时发现 \(s_if_{i,j-1}+\frac{f_{i,j+1}}{s_i}=2f_{i,j}+f_{i-1,j}\to f_{i,j+1}=2s_if_{i,j}+s_if_{i-1,j}-s_i^2f_{i,j-1}\) 然后把 \(f_{i,j+1}\) 看作当前要转移的状态即可得到最终的转移方程 \(f_{i,j}=2s_if_{i,j-1}+s_if_{i-1,j-1}-s_i^2f_{i,j-2}\),然后就可以做到 \(O(k^2)\)

posted @ 2025-10-16 16:47  Uesugi1  阅读(10)  评论(0)    收藏  举报