从这么一个式子开始说起 (F(x) = prod_{i=1}^n (1+a_i x))
如果 (e) 能够 (O(nlog n)), 那这个式子不就可以做到 (O(nlog n)) 了?
定义 (e, p) 是作用在 ((a_1, a_2,cdots, a_n)) 上的函数
可以发现对(a)进行任意多次任意交换, 不影响上述两个式子的值, 这符合对称多项式的定义
可以发现 (F(x))是(p)的(OGF)
我们一开始的那段推导就给出了一个 : 已知 (e) 求 (p) 的 (O(nlog n)) 做法
2017 thupc I Sum
给你 (a_1cdots a_n), 求 (e_1cdots e_n)
参考了一些网上的人的博客以及当时的官方题解, 似乎都是要两个 (log). 凉了...
还是讲一下那题的做法吧, 用到一个已知 (p) 求 (e) 的 (O(nlog n)) 做法
考虑用 (e_1 o e_{n-1}, p_1 o p_n) 去表示 (e_n)
首先将 (x^n) 视作 (x^{n-1} * x), 碰运气用 (e_{n-1} * p_1), 此时有可能产生形如 (x^{n-1}y) 的项, 每种形式恰好一个
然后将 (x^{n-1}y) 视作 (x^{n-2} * xy), 碰运气用 (e_{n-2} * p_2), 此时有可能产生形如 (x^{n-2}yz) 的项, 每种形式恰好一个
接着将 (x^{n-2}yz) 视作 (x^{n-3} * xyz), 碰运用 (e_{n-3} * p_3). 依次类推...
特别的, 到最后产生形如 (a_1a_2cdots a_n) 的项时, 就不是每种形式恰好一个了, 而是恰好 (n) 个
容斥一下就是 (e_n = sum_{i=1}^{n-1} (-1)^{i-1} e_{n-i} p_i + (-1)^{n-1} np_n)
写好看一点是 ((-1)^{n-1}e_n = sum_{i=1}^{n-1} ((-1)^{n-i} e_{n-i}) p_i + np_n)
在 (i>n) 时 (p_i=0), (e_i) 仍然满足上述等式.
令 (e_0=p_0=0) 就可以多项式求逆做了.
虽然 (p) 和 (e) 之间的相互转化都可以 (O(nlog n))
但是求 (p) 依赖于 (e), 求 (e) 又依赖于 (p), 我们得先算出其一
(e) 在一般情况下比 (p) 难求得多, 那么这里我们就只能用分治FFT来求 (p) 了
但是 (e) 在某些特殊情况下是能做到计算时间比 (p) 优的. 如在 (a_i=i) 时, 就不难想到伯努利数.
复杂度只与最大幂次有关, 与 (n)无关
2017 集训队 多项式求和
(f_0(x)=1, f_k(x)=sum_{i=0}^x (ai^2+bi+c)f_{k-1}(i))
要求对于 (n(2e5), m(1e9)), 求出 (f_i(m),forall 0le i le n)
构造多项式 (g_n(x))
这题里面 (f_0(n)-f_0(n-1) = 0)
因此有 $$g_n(x) = frac{g_{n-1}(x)}{1-(an^2+bn+c)x}, g_0(x)=frac{1}{1-cx}$$
(插个题外话 : (f_0(n)-f_0(n-1)
eq 0) 且 (mle 1e5) 时可以考虑分治FFT来补上这些项对答案的贡献)
求出 (g_m) 的前 (n) 项系数即可, 问题转化为求 (prod_{i=1}^{m} 1-(ai^2+bi+c)xpmod {x^n})
用文章最开头的方法去做, 转化为 (forall 0lt jle n, 求sum_{i=1}^m (ai^2+bi+c)^j)
(a=0) 时可以直接二项式定理展开, 然后卷积求
(a
eq 0) 时类似这么做得到 (sum_{k=0}^j inom j k c^{j-k} sum_{d=0}^k inom k d b^{k-d} a^d sum_{i=1}^m i^{d+k})
并不能比较快的求(可能我太菜)
参考集训队论文里的方法:
后者是 (a=0) 的情况, 前后卷积一下即可