1.#2498. Xavier is Learning to Count
有 \(n\) 个互不相同的整数 \(a_{1, \cdots, n}\),从其中任取恰好 \(k\) 个数,记他们和为 \(s\),求对于每个 \(s\) 的方案数。
\(n, a_i\le 1.3 \times 10^4, k \le 5\)。
根据互不相等容斥的结论,只需枚举集合划分的方案 \(\{S_i\}\),钦定同一个集合中的数全部相等,容斥系数为 \((-1)^{\lvert S_i \rvert - 1} (\lvert S_i \rvert - 1)!\)。
现在只需考虑枚举了一个集合划分 \(\{ S_i \}\),然后求它的方案数。
预处理出 \(F_i(x)\) 表示选出 \(i\) 个相同的数的生成函数,和为 \(m\) 的答案即为:
先 DFT,然后在点值下做完,最后 IDFT 回去就行。
时间复杂度 \(O(nk(\operatorname{Bell}(k) + \log n))\)。