1 条题解
-
0
题解
思路
核心计数
设前 种颜色共有
颗球,并且它们已经排成满足要求的序列。加入颜色 时,颜色 的最后一颗球必须出现在此前所有颜色的最后一颗球之后,因此它必须放在新序列的末尾。
剩余 颗颜色 的球可以插入末尾之前的 个位置。只需选择其中哪些位置放颜色 ,方案数为
于是答案为
$$\prod_{i=2}^{k}\binom{S_{i-1}+c_i-1}{c_i-1}\pmod {10^9+7}.$$做法
子任务 1
当 时,只需计算
也可以把它理解为从 走到 的网格路径数:每一步取出一颗颜色 或一颗非末尾的颜色 。使用滚动数组做二维递推,时间复杂度为 ,空间复杂度为 。
满分做法
模数 是质数,且所有球的总数不超过 。预处理阶乘与逆阶乘:
逆元由费马小定理 求得。随后按颜色编号从小到大维护前缀球数并乘上上述组合数。
正确性证明
引理 1
固定一个满足前 种颜色限制的序列。加入颜色 后,新序列满足颜色 的最后出现位置早于颜色 的最后出现位置,当且仅当颜色 的最后一颗球位于新序列末尾。
证明。 已有序列的末尾不晚于其中任意旧颜色的最后出现位置。若新序列末尾是颜色 ,则颜色 的最后出现位置晚于所有旧颜色;反之,若末尾是旧颜色,则该旧颜色的最后出现位置晚于颜色 ,不满足要求。∎
引理 2
对固定的旧序列,合法加入颜色 的方案数为 。
证明。 由引理 1 固定末尾的一颗颜色 后,其余位置共 个。从中选择 个位置放置不可区分的颜色 球,其余位置保持旧序列的相对顺序。选择与所得新序列一一对应。∎
定理
算法输出所有合法取球序列的数量。
证明。 初始只有颜色 时方案数为 。依次加入颜色 ,由引理 2,每个已有合法序列都恰好产生相同数量且互不重复的新合法序列,因此按乘法原理得到给定乘积。归纳可知最终恰好计数全部合法序列。∎
复杂度
预处理和逐色计算的时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1016
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者