解题思路
本题要求统计原序列的所有提取序列(保持相对顺序的子序列)中,长度为 k 且恰好包含 1 到 k 各一次(顺序任意)的完整序列个数,答案对 109+7 取模。
核心观察:
- 对于一个长度为 k 的完整序列,我们需要从原序列中为 1,2,…,k 每个数恰好选取一个出现位置。
- 选取各数的位置后,将这些位置按原序列下标升序排列,就唯一确定了一个提取序列,并且该序列一定是一个包含 1 到 k 的排列(即完整序列)。
- 反之,任意一个合法提取序列也唯一对应一组选择:每个数 i 选了自己在原序列中的一个出现位置。
- 因此,长度为 k 的完整序列总数就等于 每个数 i 的出现次数之积: