do_while_true

一言(ヒトコト)

「题解」洛谷 P8768 [蓝桥杯 2021 国 A] 积木

可能在多项式大手子面前是一个基础内容,可是菜菜只能靠青蛙一步步教导才会......因为没写代码,可能有的式子还推错了。

首先确定 \(H_x\) 合法取值范围也就是 \([w+Lx,w+Rx]\),个数是 \(\mathcal{O}(Rn)\) 的。

那么求出 \(H_x-H_1\) 的可能的差值每种有多少个方案,\(H_y-H_x\) 的可能的差值每种有多少个方案,再适当地点积起来就得到了答案。

现在问题就是求 \(H_r-H_l=i\) 的方案数,令 \(n=r-l\)\(F\) 为答案的 OGF,则有:

\[F=(z^L+z^{L+1}+\cdots +z^R)^n=\left(\frac{z^L-z^{R+1}}{1-z}\right)^n \]

提出 \(z^{Ln}\) 并令 \(k=R+1-L\) 那么即为求 \(F=\left(\frac{1-z^k}{1-z}\right)^n\) 的各项系数。

考虑对 \(F\) 求导,然后尝试化成整式递推的形式。

\[\begin{aligned} F'&=n\cdot \left(\frac{1-z^k}{1-z}\right)^{n-1}\cdot \frac{(k-1)z^k-kz^{k-1}+1}{(1-z)^2} \\ &=\frac{(1-z^k)^n}{(1-z)^n}\cdot \frac{n\cdot ((k-1)z^k-kz^{k-1}+1)}{(1-z)(1-z^k)} \\ &=F\cdot \frac{n\cdot ((k-1)z^k-kz^{k-1}+1)}{(1-z)(1-z^k)} \end{aligned} \]

注意 \(F'\)\(F\) 乘上一个分子分母仅有 \(\mathcal{O}(1)\) 项的有理分式,通分之后得到:

\[(1-z)(1-z^k)F'=F\cdot n\cdot ((k-1)z^k-kz^{k-1}+1) \]

左右两边提取 \([z^m]\),即可得到 \(F\) 的整式递推:

\[(m-k)f_{m-k}-(m-k+1)f_{m-k+1}-mf_m+(m+1)f_{m+1}=n(k-1)f_{m-k}-nkf_{m-k+1}+nf_m \]

可以 \(\mathcal{O}(nk)\) 暴力计算。

posted @ 2022-11-04 15:56  do_while_true  阅读(66)  评论(0编辑  收藏  举报