Binomial Sum 学习记录
作者:互联网
binomial Sum 可以用来求 \(\sum_{i=0}^{n}[x^i]f(x)g^{i}(x)\) 即 \(f(g(x))\) 的某些项数的线性组合 , 一般是求 \([x^k]\sum_{i=0}^{n}[x^i]f(x)g^{i}(x)\) , 复杂度为 \(O(k)\)
具体流程如下:
-
设 \(c = [x^0]g(x)\)
-
设 \(F(x + c) = f(x+c) \pmod {x ^ {n+1}}\) , 这里设 \(F(x+c) = f(x+c)\) 是为了后面代入 \(g(x) - c\) , 代入 \(g(x) - c\) 是因为 \(g(x) - c\) 常数项为零, 这样可以使高次项对答案没有贡献. 即 \((g(x)-c)^i [i > k]\) 对答案不会产生贡献。(多项式的常数项为 \(0\) 在很多情况下也需要被注意)。
-
然后可以寻找 \(F(x)\) 的递推式,可以通过求导或实际意义。
-
然后就转化为了求 \([x^k]F(g(x)) = [x^k]\sum_{i=0}^{k}[x^i]F(x)g^i(x)\)
例题1 CF932E
求
\[\begin{aligned} \sum_{i=0}^{n}\binom{n}{i}i^k \end{aligned} \]\(\binom{n}{i}\) 可以看作 \([x^i](1+x)^n\) , \(i^k\) 可以看作 \([\frac{x^k}{k!}]e^{ix}\) . 那么就是要求 \([\frac{x^k}{k!}]\sum_{i=0}^{n}[x^i](1+x)^ne^{ix} = [\frac{x^k}{k!}](1+e^x)^n\)
那么 \([x^0]e^x = 1\). 所以设 \(F(x + 1) = (x + 1 + 1)^n = (x+2)^n \pmod{x^{k+1}}\) , 考虑递推求 \(F(x + 1)\) 。设 \(f(x + 1) = (x+2)^n\)
\[\begin{aligned} f’(x + 1) &= n(x+2)^{n-1}\\ (x+2)f'(x+1) &= n(x + 2)^n\\ (x+2)f'(x+1) &= nf(x+1)\\ (x+2)f'(x+1) - nf(x+1)&= 0\\ \end{aligned} \]那么对 于 \(F(x + 1)\) , 这样会少考虑 \([x^{k}][2f'(x + 1)]x^k\) 的贡献. 所以
\[(x+2)F'(x+1) - nF(x+1) = -[x^{k}][2f'(x+1)]x^k\\ \]然后把多项式平移一下
\[\begin{aligned} &(x+1)F'(x) - nF(x)\\ =&-[x^{k}][2 f'(x+1)](x-1)^k \\ =& -n\binom{n-1}{k}2^{n-k}(x-1)^k \\ =& \sum_{i=0}^{k}(-1)^{k-i+1}\binom{k}{i}n\binom{n-1}{k}2^{n-k}x^i \\ \end{aligned} \]提取系数得到
\[F[i] = \frac{(-1)^{k-i}n\binom{k}{i-1}\binom{n-1}{k}2^{n-k} + (n-i+1)F[i-1]}{i} \]然后发现不知道 \(F[0]\) ,试着求一下
\[\begin{aligned} &[x^0]F(x)\\ =&[x^0]F(x - 1 + 1)\\ =&[x^0]\sum_{i=0}^{k}[x^i]F(x+1)(x-1)^i\\ =&[x^0]\sum_{i=0}^{k}[x^i](x+2)^n(x-1)^i\\ =&[x^0]\sum_{i=0}^{k}\binom{n}{i}2^{n-i}(x-1)^i\\ =&\sum_{i=0}^{k}\binom{n}{i}2^{n-i}(-1)^i\\ \end{aligned} \]这样就得到了 \(F(x)\) .
而我们要求的是 \([\frac{x^k}{k!}]F(e^x) = [\frac{x^k}{k!}]\sum_{i=0}^{k}[x^i]F(x)e^{ix} = \sum_{i=0}^{k}i^k[x^i]F(x)\)
这样就可以 \(O(k+\log n)\) 解决这道题了
标签:begin,frac,记录,Sum,Binomial,end,binom,aligned,sum 来源: https://www.cnblogs.com/i209M/p/16335551.html