1. 程式人生 > >洛谷 P4705 玩遊戲

洛谷 P4705 玩遊戲

題目分析

題目要求的是:
\[ \sum_{i=1}^n\sum_{j=1}^m(a_i+b_j)^x(x\in [1,T]) \]

利用二項式定理化式子,
\[ \begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m(a_i+b_j)^x\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{k=0}^x\binom{x}{k}a_i^kb_j^{x-k}\\ =&x!\sum_{i=1}^n\sum_{j=1}^m\sum_{k=0}^x\frac{a_i^k}{k!}\frac{b_j^{x-k}}{(x-k)!}\\ =&x!\sum_{k=0}^x\frac{\sum_{i=1}^na_i^k}{k!}\frac{\sum_{j=1}^mb_j^{x-k}}{(x-k)!} \end{aligned} \]

發現上面是一個卷積的形式。現在需要我們能快速求出\(\sum\limits_{i=1}^na_i^k\)

構造\(\sum\limits_{i=1}^na_i^k\)的生成函式:
\[ \begin{aligned} A(i)&=\sum_ja_i^jx^j\\ F(x)&=\sum_{i=1}^nA(i) \end{aligned} \]

\(F\)函式的每一項即為\(\sum\limits_{i=1}^na_i^k\)

化一下式子
\[ \begin{aligned} F(x)&=\sum_{i=1}^n\sum_{j}a_i^jx^j\\ &=\sum_{i=1}^n\frac{1}{1-a_ix}\\ &=\sum_{i=1}^n1+\frac{a_ix}{1-a_ix}\\ &=n-x\sum_{i=1}^n\frac{-a_i}{1-a_ix}\\ &=n-x\sum_{i=1}^n\left[\ln(1-a_ix)\right]'\\ &=n-x\left[\sum_{i=1}^n\ln(1-a_ix)\right]'\\ &=n-x\left\{\ln\left[\prod_{i=1}^n(1-a_ix)\right]\right\}'\\ \end{aligned} \]

\(\prod_{i=1}^n(1-a_ix)\)可以用分治FFT\(O(nlog^2n)\)算出。

那麼再求ln,求導,乘上x,取負,加上常數項就能得到\(F\)了。

最後把a,b的生成函式分別除以一下階乘,再卷積一下即可。