AGC002F-Leftmost-Ball
题意
\(n\) 种颜色的球,每种颜色有 \(k\) 个,任意排列这 \(n\times k\) 个球,然后每次将所有颜色的第一个球涂抹成白色(认为是 \(n+1\) 个颜色),求最终有多少种颜色序列。
思路
对于这种方案,我们考虑最终的颜色序列能不能唯一对应一种构造方法,这样我们只需要统计这种构造方法构造出的能有几种就行了。我们从左到右考虑一个白球,我们发现现在不知道它对应的是哪个颜色,我们考虑直接让它对应往后出现的第一个颜色。这样子我们就可以唯一对应出了一个颜色序列。
我们考虑这种分配颜色,如果直接从左到右是非常不好做的,考虑从整体分配。设 \(f_{i,j}\) 表示现在整个序列有 \(i\) 个白球,\(j\) 个分配完的颜色。那么在这个状态下,我们肯定希望这些白球对应着这些颜色,所以一定要有 \(i\ge j\)。之后我们考虑还有哪些空位。考虑最左边的一个空位。我们考虑它放白球没有任何条件,所以可以从 \(f_{i-1,j}\) 转移。否则我们放颜色,可以从 \(n-j+1\) 个颜色里先选择一个放在这,然后在后面因为不存在别的白球所以可以认为是随便放的。即从 \((n-j+1)\binom{nk-(j-1)(k-1)-i-1}{k-2}f_{i,j-1}\) 转移。
然后因为我们这里是默认每一次一定有新颜色的球,所以特判一下 \(k=1\) 即可。
时间复杂度 \(\mathcal{O}(n^2)\)。

浙公网安备 33010602011771号