一道有趣的幼儿园组合题的许许多多解法
皎月半洒花
2020-05-07 15:45:39
题面
> 有 $n$ 个⿊球,$m$ 个⽩球,每次等概率取出⼀个球(不放回),将取出来的球的颜⾊写成⼀个 $01$ 序列,求 `01` 的期望出现次数。所有运算均在 $\bmod 998244353$ 意义下进行。
>
>
| 子任务编号 | 分值 |$\max\{n,m\}$ | 特殊性质 |
|:-----: | :----------: | :----------: |:---:|
|$\rm Subtask1$ | $5$ | $\leqslant 20$ | \ |
|$\rm Subtask2$ | $30$ | $\leqslant 300$ | \|
|$\rm Subtask3$ | $25$ | $\leqslant 5000$ | \|
|$\rm Subtask4$ | $10$ | $\leqslant 5\cdot 10^6$ | $n=m$|
|$\rm Subtask5$ | $15$ | $\leqslant 10^6$ | \ |
|$\rm Subtask5$ | $15$ | $\leqslant 10^{9}$ | \ |
_____
# 5pts 做法
枚举所有可能的颜色排列,复杂度 $O(n\cdot 2^n)$。
# 35pts 做法
设 $X$ 表示出现次数,那么有
$$
\mathbb{E}(X)=\sum_{i=1}^{\min\{n,m\}}\Pr(X=i)\cdot i
$$
考虑这个 $X=i$ 怎么算,本质上是求 $01$ 排列有多少种方案存在恰好 $i$ 个 `01`,也就只需要计算 $i$ 个相隔距离 $\geq 1$ 的 $0$ 的方案数。这个地方想了一会儿没找到什么闭形式,于是打算直接 $dp$ 。
设 $f_{i,j,k,0/1}$ 表示前 $i$ 位有 $j$ 个 $0$ ,其中有 $k$ 个 $01$ ,且第 $i$ 位放了 $0/1$ 的方案数,那么有转移
$$
f_{i+1,j,k+1,1}\leftarrow f_{i,j,k,0}\to f_{i+1,j+1,k,0}
$$
$$
f_{i+1,j+1,k,0}\leftarrow f_{i,j,k,1}\to f_{i+1,j,k,1}
$$
时空复杂度均为 $O(n^3)$ 。
# 60pts 做法
发现继续沿用对着每个 $i$ 求贡献的做法。发现本质上就是从长为 $n+m$ 的序列里面选出 $i$ 个不相邻的 `0` 的方案数。考虑转化一下这个问题。首先可以转化成从 $1\sim n +m$ 里面选择 $i$ 个不相邻的数的方案数。之后考虑对于选出来的数 $a_1,a_2,a_3\cdots a_i$ ,从小到大排序后一定满足
$$
a_1<a_2-1<a_3-1<a_4-1< \cdots<a_{i}-1
$$
考虑令
$$
b_1=a_1-1,b_2=a_2-2,b_3=a_3-3,b_4=a_4-4\cdots b_i=a_i-i
$$
发现这样随便选择两个相邻的 $b_{k},b_{k+1}$ 都会有
$$
b_k=a_k-k<a_{k+1}-1-k=a_{k+1}-{k+1}=b_{k+1}
$$
也就是从 $1\sim n+m-i$ 中选择可以相邻的 $\{b\}$ 的方案数等于在 $1\sim n+m$ 中选择不能相邻的 $\{a\}$ 的方案数。于是可以知道有 $i$ 个 $01$ 时的方案数就是
$$
f_i=\binom{n+m-i}{i}\cdot \binom{n+m-2\cdot i}{n-i}
$$
注意到因为序列其他位置的方案数也要考虑,所以需要再乘上一个剩下未知的方案数。但是注意到,剩下位置可能还会存在 $01$ ,所以 $f_i$ 本质上算的是「至少 $i$ 个的方案数」。设 $g_i$ 表示「恰好 $i$ 个的方案数」,那么可知:
$$
g_i=\sum_{j\geq i} \binom{j}{i} \cdot (-1)^{j-i}f_j
$$
因为有二项式反演:
$$
f(n)=\sum_{i=n}^{m}\left(\begin{array}{c}i \\ n\end{array}\right) g(i) \Leftrightarrow g(n)=\sum_{i=n}^{m}(-1)^{i-n}\left(\begin{array}{c}i \\ n\end{array}\right) f(i)
$$
然后就可以获得一个时空复杂度均为 $O(n^2)$ 的做法。
# 70pts 做法
有特殊性质 $n=m$。可以通过进一步对上一个做法用组合恒等式来化简,或者直接找规律,可以发现当 $n=m$ 时,$g_i=\binom{n}{i}^2$。于是就可以线性做了。
# 85pts 做法
并不会,有人来教教我吗?不过似乎二项式反演那部分是可以做到 $\log^2$ 的?这可能需要什么多项式科技。
# 100pts 做法
发现对于期望,只需要算出所有情况下 $01$ 数量的总和,除以全部的合法排列数即可。考虑这个总和也是可以分开算的,即可以算对于每个可能出现的 `01` 计算与之对应的有多少贡献。于是答案就是:于是答案就是:
$$
\frac{(n+m-1)\cdot \binom{n+m-2}{m-1}}{\binom{n+m}{m}}
$$
化简一下可以得到答案为
$$
\frac{n\times m}{n+m}
$$
复杂度 $O(\log n)$ 。
# 声明
题目以及以上题解版权归 @皎月半洒花 所有
~~因为我可能什么时候就拿这题去骗钱了。~~