【题解】Luogu P4705 玩游戏

约定记号:对于生成函数 \(F(x)\) ,我们用 \([k_n(x)]F(x)\) 来表示它的第 \(n\) 项的核函数对应的系数,也就是 \(a_n\)

先把答案式子写出来:

\[ans_k=\frac{\sum_{i = 1}^n\sum_{j = 1}^m(a_i+b_j)^k}{nm} \]

先处理分子

\[\begin{aligned} ans_k&=\frac{1}{nm}\sum_{i=1}^n\sum_{j=1}^m(a_i+b_j)^k\&=\frac{1}{nm}\sum_{i=1}^n\sum_{j=1}^m\sum_{l=0}^k\binom{k}{l}a_i^lb_j^{k-l}\&=\frac{1}{nm}\sum_{i=1}^n\sum_{j=1}^m\sum_{l=0}^k\frac{k!}{l!(k-l)!}a_i^lb_j^{k-l}\&=\frac{k!}{nm}\sum_{i=1}^n\sum_{j=1}^m\sum_{l=0}^k\frac{a_i^l}{l!}\frac{b_j^{k-l}}{(k-l)!}\&=\frac{k!}{nm}\sum_{l=0}^k(\sum_{i=1}^n\frac{a_i^l}{l!})(\sum_{j=1}^m\frac{b_j^{k-l}}{(k-l)!}) \end{aligned} \]

\[A(x)=\sum_ix^i\sum_{j=1}^n\frac{a_j^i}{i!}\B(x)=\sum_ix^i\sum_{j=1}^m\frac{b_j^i}{i!} \]

\[\begin{aligned} ans_k&=\frac{k!}{nm}\sum_{l=0}^k[x^l]A(x)*[x^{k-l}]B(x)\&=\frac{k!}{nm}[x^k](A*B)(x) \end{aligned} \]

即用卷积表示原式

现在只需求 \(A(x)\)\(B(x)\) 这两个生成函数就可以得到所有的 \(ans_k\)

这里以求 \(A(x)\) 为例,\(B(x)\) 同理

先交换一下求和顺序:

\[\begin{aligned} A(x)&=\sum_ix^i\sum_{j=1}^n\frac{a_j^i}{i!}\&=\sum_{i=1}^n\sum_j\frac{x^ja_i^j}{j!} \end{aligned} \]

\[A_1(x)=\sum_ix^i\sum_{j=1}^na_j^i \]

那么有

\[[x^n]A(x)=\frac{1}{n!}[x^n]A_1(x) \]

求出 \(A_1(x)\) 即可求出 \(A(x)\)

改写一下上面交换求和顺序的过程:

\[\begin{aligned} A_1(x)&=\sum_ix^i\sum_{j=1}^na_j^i\&=\sum_{i=1}^n\sum_jx^ja_i^j\&=\sum_{i=1}^n\frac{1}{1-a_ix} \end{aligned} \]

这个分式很讨厌,想办法把它搞掉

可以想到 \(\ln‘(x)=\frac{1}{x}\),想办法往 \(\ln\) 的导数上靠

最直接的思路是:

\[\ln‘(1-a_ix)=\frac{1}{1-a_ix} \]

带到 \(A_1(x)\) 里:

\[\begin{aligned} A_1(x)&=\sum_{i=1}^n\frac{1}{1-a_ix}\&=\sum_{i=1}^n\ln‘(1-a_ix) \end{aligned} \]

发现这样也不可做,我们得想办法将导数弄到求和外面去

使用 \([f(g(x))]‘=g‘(x)f‘[g(x)]\),有:

\[[\ln(1-a_ix)]‘=(1-a_ix)\ln‘(1-a_ix)\\]

\[[ln(1-a_ix)]‘=\frac{-a_i}{1-a_ix} \]

用小学知识在 \(\dfrac{-a_i}{1-a_ix}\)\(\dfrac{1}{1-a_ix}\) 之间建立一下关系式:

\[\frac{1}{1-a_ix}=1-x\frac{-a_i}{1-a_ix} \]

将所得整理,代回 \(A_1(x)\)

\[\begin{aligned} A_1(x)&=\sum_{i=1}^n\frac{1}{1-a_ix}\&=\sum_{i=1}^n(1-x\frac{-a_i}{1-a_ix})\&=\sum_{i=1}^n(1-x*[\ln(1-a_ix)]‘)\&=n-x[\sum_{i=1}^n\ln(1-a_ix)]‘\&=n-x[\ln\prod_{i=1}^n(1-a_ix)]‘ \end{aligned} \]

现在只需要求 \(\prod_{i=1}^n(1-a_ix)\) ,分治乘就好了

复杂度 \(T(n)=2T(\dfrac{n}{2})+\Theta(n\log n)=\Theta(n\log^2 n)\)

【题解】Luogu P4705 玩游戏

上一篇:vue elementui el-form 表单验证 rules详细说明


下一篇:Lab: CSRF where token is duplicated in cookie CSRF,其中令牌在 cookie 中重复