十分神仙。
考虑正整数幂:
假设我们给定了 \(n\) 被要求求解 \(k=\{1,2,3...10^5\}\) 时的答案,怎么办( \(n\) 非常大 )。
考虑一个构造,我们构造 \(\mathbf{EGF}\) 来计算答案,设 \(S_k(n)=\sum_{i=1}^n i^k\),我们构造 \(\mathbf{EGF}\) 为:
容易注意到:
然后考虑
那么直接展开分子,然后求个分母的逆即可,复杂度 \(\mathcal O(k\log k)\)
对于某个具体的 \(k\) 考虑快速的求解此多项式:
考虑构造,假设能够将 \(G_n(x)\) 表示为两个多项式的卷积,同时其中一个恰好为以 \(n\) 的次幂为系数的多项式,那么我们容易得到系数即卷积结果,换而言之得到其多项式表达式。
事实上,我们注意到:
注意到后者本质是 \(\mathbf{EGF}\{\frac{n}{1},\frac{n^2}{2},\frac{n^3}{3}...\frac{n^{i+1}}{i+1}\}\),请注意描述 \(\mathbf{EGF}\) 系数序列时默认除以 \(i!\)
然后考虑 \(\frac{xe^x}{e^x-1}\) 的展开式,我们认为其展开式的对应级数为 \(\mathbf{EGF}\{B_0,B_1...\}\)
所以我们得到:
这样就得到了 \(\sum_{i=0}^n i^k\) 这个关于 \(n\) 的多项式 \(S_k(n)\) 的通式了。
注意到伯努利数本质上是 \(\frac{xe^x}{e^x-1}\) 的展开式,所以求逆即可。
注意到:
所以 \(\mathbf{EGF}\{B_0,B_1...\}\times \mathbf{EGF}\{\frac{1}{1},\frac{1}{2},\frac{1}{3}...\}=\mathbf{EGF}\{1,1,1...\}\)
所以我们有:
以 \(B_0=1\) 为边界,我们可以依次递推得到 \(B_i\),复杂度 \(\mathcal O(k^2)\)
例题:
给定 \(n\) 个数 \(a_{1\sim n}\) 以及常数 \(k\),求:
\(\rm Sol:\)
后者考虑通过伯努利数求得其展开多项式,我们所求变为:
于是只需要求后者。
考虑构造多项式 \(F_i(x)=\sum_{j=0}^{\infty} a_i^j x^j\)
那么所求即 \(\sum F_i(x)\) 的系数序列,设为 \(G(x)\)
注意到 \(F_i(x)\) 显然可以收敛为 \(\frac{1}{1-a_ix}\),那么所求即:
下面可以分治 NTT 处理,上面可以考虑组合意义,注意到下面计算式的 \([x^k]\) 处系数等价于从 \(n\) 个括号中选出 \(k\) 个 \(-a_ix\) 的权值和,那么分子即选出 \(k\) 个后再从剩余的元素中删去一个方案数,所以有 \(f_i‘=f_i\times (n-i)\)
然后直接计算答案即可,复杂度 \(\mathcal O(n\log^2 n+k\log k)\)
原文:https://www.cnblogs.com/Soulist/p/13658922.html