AGC002F Leftmost Ball

题目链接

​ 先特判一下 $ k = 1$ 的情况, 然后将每个颜色第一次出现的位置严格从小到大计数, 最后答案乘 \(n!\) 即可。

​ 之后考虑 DP, 我们假设已经求解已经出现了 \(i - 1\) 种颜色的排列的数量, 我们要用这来推出 \(i\) 种颜色的排列的数量, 那么我们考虑将原本 \(i - 1\) 种颜色的排列所有非 0 元素 +1, 然后把 \(0\dots1111\) 插进原排列种, 于是就避免了第 \(i\) 种颜色和第 \(i - 1\) 种颜色出现的位置的讨论, 之后我们发现这数量以之前的排列中前面 0 的数量有关, 于是考虑多设一个状态记前面 0 的数量, 很容易就得到以下方程。

​ 记 \(dp_{i,j}\) 表示出现 \(i\) 种颜色, 左边至少有 \(j\) 个 0 的排列的数量, 则

\[dp_{i,j}=dp_{i,j + 1} + dp_{i - 1, j - 1}\times{\binom{i\times k - (j + 1)}{k - 2}} \]

​ 按此方程递推即可。答案为 \(dp_{n,1}\times n!\)。

上一篇:HTML原生UI的实现


下一篇:Leecode32 longest-valid-parentheses