2025.5.13 闲话

歌:动く、动く .

考虑一下怎么使用 GF 方法推导反射容斥?

kernel method

列三元生成函数 \(F(x,y;t)\)\(x,y\) 刻画两条线的限制、\(t\) 计量步数,则有:

\[\begin{aligned}F(x,y;t)&=1+t(xy^{-1}(F(x,y;t)-F(x,0;t))+x^{-1}y(F(x,y;t)-F(0,y;t)))\\&=\dfrac{xy-tx^2F(x,0,t)-ty^2F(0,y,t)}{xy-tx^2-ty^2}\end{aligned} \]

然后就爆炸了根本做不了(

如果谁会做请教导一下 /kel

EI 在生成函数的败北知道我们,通过迭代列可以推导出反射容斥的结果:

count

\[F_m(x)=\begin{cases}1&m=0\\\dfrac{1}{1-xF_{m-1}(x)}&m>0\end{cases} \]

\([x^n]F_m(x)\) .

由于此处的迭代列是线性分式变换,所以可以直接写出线性递推:

\[F_m(x)=\dfrac{P(x)}{Q(x)}\qquad\text{where }\begin{bmatrix}P(x)\\Q(x)\end{bmatrix}=\begin{bmatrix}&1\\-x&1\end{bmatrix}^m\begin{bmatrix}1\\1\end{bmatrix} \]

\(\lambda=\frac{1-\sqrt{1-4x}}2\) 是一个特征根,则就是要计算:

\[[x^n]\dfrac{(1-\lambda)^{m+1}-\lambda^{m+1}}{(1-\lambda)^{m+2}-\lambda^{m+2}} \]

由于 \(\lambda(1-\lambda)=x\),使用 Lagrange 反演:

\[[x^n]F_m(x)=\dfrac1n[x^n]\left(\dfrac{(1-x)^{m+1}-x^{m+1}}{(1-x)^{m+2}-x^{m+2}}\right)'\left(\dfrac x{x(1-x)}\right)^n \]

可以发现左边其实只有 \(\Theta(\frac nm)\) 项有值,那么暴力卷积即可 \(\Theta(\frac nm)\) .

posted @ 2025-05-13 17:44  Jijidawang  阅读(230)  评论(1)    收藏  举报
😅​