【洛谷p4705】玩游戏

题目大意

一个长度为\(n\)的序列\(a\)和长度为\(m\)的序列\(b\),对于\(1..t\)的每个\(k\),求
\[ \frac{1}{nm}\sum_{x=1}^n \sum_{y=1}^m (a_x+b_y)^k \]
\(n,m,t\leq 10^5\)

题解

\[ \begin{aligned} ans&=\frac{1}{nm}\sum_{x=1}^n \sum_{y=1}^m \sum_{i=0}^k {k\choose i} a_x^i b_y^{k-i}\\ &=\frac{1}{nm} \sum_{i=0}^k \sum_{x=1}^n \sum_{y=1}^m {k\choose i} a_x^i b_y^{k-i}\\ &=\frac{k!}{nm} \sum_{i=0}^k \sum \frac{a^i}{i!} \sum \frac{b^{k-i}}{(k-i)!} \end{aligned} \]
下面考虑如何对所有\(k\)求出\(\sum_{j=1}^n a_j^i\)
写出\(OGF\)后变换枚举顺序。
\[ \begin{aligned} A&=\sum_{i=0}^\infty x^i \sum_{j=1}^n a_j^i\\ &=\sum_{i=1}^n \sum_{j=0}^\infty a_i^j x^j\\ &=\sum_{i=1}^n \frac{1}{1-a_ix} \end{aligned} \]
其实这里就可以分治然后通分了,但是常数比较大。
如果对函数嵌套起来求导的那个玩意比较熟悉的话可以想到\(ln(1-ax)'=\frac{-a}{1-ax}\)
\[ \begin{aligned} A&=\sum \frac{1}{1-ax}\\ &=\sum 1-x\frac{-a}{1-ax}\\ &=n-x\sum ln(1-ax)'\\ &=n-x*ln(\prod 1-ax)' \end{aligned} \]
分治求出那个积之后带回去求可以求出\(A,B\),直接卷积即可。

猜你喜欢

转载自www.cnblogs.com/zzqtxdy/p/12081287.html