Different Subsets For All Tuples
Different Subsets For All Tuples
2023-09-09
题目
Different Subsets For All Tuples
难度&重要性(1~10):8.5
题目来源
luogu
题目算法
组合数学
解题思路
这道题很明显的一个点就是我们不可能一个一个的枚举序列。
考虑枚举子序列的长度来计算它在那些序列中出现过。
设当前子序列长度为 \(i\),那么子序列就有 \(m^i\) 种情况,我们记子序列表示为:\(a_1,a_2,a_3,\cdots,a_i\)。那么我们需要保证子序列不会重复出现,就需要要求子序列在原序列中的位置是出现最早的。
为了保证这一点,那么在 \(a_1\) 之前不能出现 \(a_1\) 这个数字,在 \(a_1\sim a_2\) 之间不能再出现 \(a_2\)以此类推。这就保证了子序列出现的最早了,那么有多少种填法能?
我们记 \(j\) 表示 \(a_i\) 的位置是 \(j\)。
我们知道,在 \(a_i\) 后面的数字随便填,有 \(m^{n-j}\) 种情况。
而在 \([1,j]\) 之中有 \(j-i\) 个空位可以填,每一个空位都只有一个数字是不能填写的,就有 \((m-1)^{j-i}\) 种情况,而子序列 \(a_1,a_2\cdots,a_{i-1}\) 在 \([1,j-1]\) 这之中有需要填 \(i-1\),就有 \(C_{j-1}^{i-1}\) 种方案。
这样,得到式子:\(\sum\limits_{i=1}^nm^i\sum\limits_{j=i}^nC_{j-1}^{i-1}(m-1)^{j-i}m^{n-j}\)。
好了,接下来就可以好好的推逝子了。
这样我们就可以达到什么呢?
让我们简单复习一下二项式定理:\((x+y)^n = \sum\limits_{k=0}^{n-1} C_n^k x^k y^{n-k}\)
那么我们就可以进一步化简一下:
这样我们就可以直接算了。
时间复杂度为 \(O(n)\)。
完成状态
已完成

浙公网安备 33010602011771号