Loading

2025.2.18的模拟赛题目“舞蹈”题解

2025.2.18的模拟赛题目“舞蹈”题解

求 :

\[n![x^n](\sum_{i}\frac {i^{i+k}x^i}{i!})^m \bmod p \]

规定 \(0^{-1}=0,0^0=1\)

\(1\le n,m\le 2\times 10^6,-1\le k\le 10,p\in [9\times 10^8,10^9]\)


用多项式科技直接算是 \(\mathcal O(n\log n)\) 由于是任意模数要用 MTT 于是常数巨大会 TLE 。

\(k=-1\)

我们知道 \(i^{i-1}\) 的组合意义是 \(i\) 个点的有根树的数量,那么这其实是在把 \(n\) 个有标号点分为 \(m\) 棵有根有标号树的方案数。

我们可以建一个超级根 \(0\),并使其连向所有根,可以发现这两者是双射的,所以原问题等价于求 \(n+1\) 个有标号点无根树计数且第 \(0\) 号点度数为 \(m\) 的方案数。由于 \(0^{-1}=0\),这些树不能为空。

Prüfer 序列可能比你想得还强大。它能创造比凯莱公式更通用的公式——OI Wiki

我们知道一个点在prufer序列中出现次数等于其度数减一,这相当于在prufer序列的 \(n-1\) 个位置处选 \(m-1\) 个位置放零,其余位置放 \(1\sim n\)。乘上树的有标号总方案数为:\(m!{n-1\choose m-1}n^{n-m}\)。这就是答案。

\(k=0\)

我们用强大的注意力可以发现,\(i^i\) 的组合意义其实就是 \(i\) 个点分为若干个有标号有根树的方案数,证明如下:

\[\begin{aligned} &\sum_{i=1}^n{n-1\choose i-1}n^{n-i}i!\\ =&(n-1)!\sum_{i=1}^n\frac{in^{n-i}}{(n-i)!}\\ =&(n-1)!\sum_{i=0}^{n-1}\frac{(n-i)n^i}{i!}\\ =&(n-1)!(\sum_{i=0}^{n-1}\frac{n^{i+1}}{i!}-\sum_{i=0}^{n-2}\frac{n^{i+1}}{i!})\\ =&n^n \end{aligned} \]

所以原式的组合意义是把 \(n\) 个点组成的若干有标号有根树数分成 \(m\) 个有标号森林的方案数,由于 \(0^0=1\),这些森林可以为空。

那么我们先枚举生成了若干个有标号树的方案数,再把他们有标号的分到 \(m\) 个有标号森林中,于是答案为:

\[\sum_{i=1}^nn^{n-i}{n-1\choose i-1}i!{i+m-1\choose m-1} \]

其中 \(n^{n-i}{n-1\choose i-1}\) 是无序的生成 \(i\) 颗树的方案数,\(i!{i+m-1\choose m-1}\) 是把他们整体标号后划分到可空的放入 \(m\) 个有标号森林的方案数。

后面的做法给我人整红温了。

不说证明直接给结论还是循环论证。

但具体思路是清楚的,但这是人能做出来我吃。

就是说可以类似上述 \(k=0,k=-1\) 的方法

\(i^{i+k}\) 转化为森林计数且使其权值仅与森林的有根树数量有关,假设有 \(t\) 个有根树那么设权值为 \(val(k,t)\)

如果我们能有一种映射 \(f:A\to B\) 使得 \(\forall b\in B\) 都在集合 \(A\) 中出现 \(b\) 的权值次,那么求 \(B\) 的带权方案和,就相当于求 \(|A|\)

其实组合意义也是一种映射,所以十分神奇。

具体做法是神奇的:

上述图片取自题解,我没看懂

posted @ 2025-02-19 18:33  lupengheyyds  阅读(24)  评论(0)    收藏  举报