【组合数学、范德蒙德恒等式】ABC433F

· · 题解

【组合数学、范德蒙德恒等式】ABC433F

原题链接

简要题意

给定一个数字字符串 S,计算其子序列中满足“1122 结构”的数量。

所谓 1122 结构指:字符串由 k 个数字 d 和随后的 k 个数字 d+1 组成(k \ge 1, 0 \le d \le 8)。

例如:1122 (k=2, d=1)、444555 (k=3, d=4)。

## 思路 ### 1. 拆解与枚举 由于 $d$ 只能是 $0 \sim 8$,我们首先枚举这 9 种相邻数字对 $(d, d+1)$。对于每一种情况,我们独立计算贡献并累加。 ### 2. 定序去重(关键观察) 为了防止同一个子序列被重复计算,我们需要找到一个**唯一的统计标准**。 我们规定:**在枚举数字对 $(d, d+1)$ 时,固定子序列中最后一个 $d$ 在原字符串 $S$ 中的位置为 $i$。** 这样,对于任何一个确定的 1122 子序列,其第一个数字段的终点是唯一的,从而实现了不重不漏。 ### 3. 组合数学建模 假设当前枚举到位置 $i$ 且 $S[i] = d$: - 设 $A$ 为 $S[1 \dots i]$ 中数字 $d$ 的出现次数。 - 设 $B$ 为 $S[i+1 \dots n]$ 中数字 $d+1$ 的出现次数。 - 若该子序列的半长度为 $k$: - 左侧需从剩余的 $A-1$ 个 $d$ 中选出 $k-1$ 个,方案数为 $\binom{A-1}{k-1}$。 - 右侧需从 $B$ 个 $d+1$ 中选出 $k$ 个,方案数为 $\binom{B}{k}$。 - 该位置的总贡献为:$\sum_{k=1}^{\min(A, B)} \binom{A-1}{k-1} \binom{B}{k}$。 ### 4. 范德蒙德恒等式优化 直接枚举 $k$ 会导致 $O(N^2)$ 的复杂度,在 $N=10^6$ 下无法接受。观察求和式: 利用 $\binom{n}{r} = \binom{n}{n-r}$,将 $\binom{B}{k}$ 改写为 $\binom{B}{B-k}$。 则原式为:$\sum \binom{A-1}{k-1} \binom{B}{B-k}$。 根据**范德蒙德恒等式**,这等价于从 $(A-1) + B$ 个元素中选取 $(k-1) + (B-k) = B-1$ 个元素。 即: $$\text{Contribution} = \binom{A+B-1}{B-1} = \binom{A+B-1}{A}$$ 通过预处理阶乘逆元,我们可以 $O(1)$ 计算该结果,使总复杂度降为 $O(9N)$。