Gem Island 2

闲话:本文因为全抄的某篇题解所以不敢放题解区了。

Gem Island 2

直接考虑最终状态 \(a_1,a_2,\dots,a_n\) 并计算其概率。

由于 \(\sum a_i=n+d\),我们把多余的 \(d\) 颗宝石拿出来,我们发现当 \(a\) 固定时,存在一个宝石的分配情况与这 \(d\) 颗宝石的排列的双射,因此其方案数为 \(d!\)

现在我们需要计算所有的方案中前 \(r\) 大的元素之和,最后再乘一个 \(\dfrac{d!}{n^{\overline d}}=\dbinom{n+d-1}{n-1}^{-1}\)

考虑一个固定的序列 \(a\),可以这样计算它的贡献 \(\sum_{v>0}\min(r,\sum_{i=1}^n[a_i\ge v])\),可以想象一个柱状图,原来是一列一列地算面积,现在一行一行地算面积。

\(f_{v,i}\) 表示恰好有 \(i\) 个元素的值 \(\ge v\) 的序列 \(a\) 的方案数。其实不好求,所以考虑二项式反演,设 \(g_{v,i}\) 表示至少有 \(i\) 个元素的值 \(\ge v\) 的序列 \(a\) 的方案数。

插板法有 \(g_{v,i}=\dbinom{n}{i}\dbinom{n+d-iv-1}{n-1}\)

由于 \(g_{v,i}=\sum_{j=i}^n\dbinom jif_{v,j}\),所以 \(f_{v,i}=\sum_{j=i}^n(-1)^{j-i}\dbinom jig_{v,j}\)

而答案即为 \(\sum_{v>0}\sum_{i=1}^nf_{v,i}\times\min(i,r)\)

考虑把 \(f\) 丢掉,直接计算每个 \(g_{v,i}\) 对答案的贡献,其为

\[\sum_{j=1}^i(-1)^{i-j}\binom ij\min(j,r) \]

打个表可以发现它等于 \(\begin{cases}1,&i=1\\(-1)^{i-r}\dbinom{i-2}{r-1},&i>1\end{cases}\)

于是答案即为 \(\sum_{v>0}\dbinom n1\dbinom{n+d-v-1}{n-1}+\sum_{v>0}\sum_{i=2}^n(-1)^{i-r}\dbinom{i-2}{r-1}\dbinom ni\dbinom{n+d-iv-1}{n-1}\)

第一部分是简单的,关注后半部分 \(\sum_{v=1}^d\sum_{i=2}^n(-1)^{i-r}\dbinom{i-2}{r-1}\dbinom ni\dbinom{n+d-iv-1}{n-1}\)

注意到 \(iv\le d\),所以暴力做是 \(O(d\log d)\) 的,但是还能更优。

\[\begin{aligned} &\sum_{v=1}^d\sum_{i=2}^n(-1)^{i-r}\dbinom{i-2}{r-1}\dbinom ni\dbinom{n+d-iv-1}{n-1}\\ &=\sum_{i=2}^n(-1)^{i-r}\binom{i-2}{r-1}\binom ni\sum_{i|t}^d\binom{n+d-t-1}{n-1} \end{aligned} \]

\(h_i=\sum_{i|t}^d\dbinom{n+d-t-1}{n-1}\) 是可以用高维后缀和预处理出的,这样就是 \(O(d\log\log d)\) 了。就是类似 FMT 的那种手法,但是放到 \((|,\Z^+)\) 的格里面了。

posted @ 2024-12-16 17:09  justalearner  阅读(12)  评论(0)    收藏  举报