Loading

多项式技巧

前排提示,鉴于笔者的数学水平限制,因此本文的大多数内容都不保证有证明,且不保证正确,仅作为自己复习使用,如有错误也可以提出。

集合幂级数有关理论

集合幂级数 ln-exp

我们定义集合幂级数 exp 中的乘法为子集卷积,有 \(\exp(F)=\sum_i \frac{F^i}{i!}\),由于做子集卷积时每一维是独立的,我们可以先 FMT 再分别对每一维做 exp,最后再 IFMT 回来,由于位数很少,因此可以直接做 \(O(n^2)\) 的 exp,设 \(G(x)=\exp F(x)\),两边求导,得到 \(G'(x)=F'(x)e^{F(x)}=F'(x)G(x)\),两边对比 \(x^n\) 项系数就能得到:

\[(n+1)g_{n+1}=\sum_{j=0}^n (j+1)f_{j+1} g_{n-j} \]

\(n+1 \gets n\),有:

\[g_n=\frac{1}{n}\sum_{j=0}^{n-1} (j+1)f_{j+1} g_{n-1-j} \]

然后再化简成一个简单的形式:

\[g_n=\frac{1}{n}\sum_{j=1}^{n} jf_{j} g_{n-j} \]

对于 ln,由于 \(g_0=1\) 我们只需把上式反过来求 \(f_n\),得到:

\[f_n = g_n-\frac{1}{n} \sum_{j=1}^{n-1} jf_jg_{n-j} \]

处理 OGF/EGF 的一些技巧

拉格朗日反演

普通拉反

用处是知道生成函数的复合逆用来反推出原生成函数,若 \(F(x)\)\(G(x)\) 互为复合逆,即有如下式子:

\[[x^n]F(x)=\frac{1}{n} [x^{n-1}] \left( \frac{x}{G(x)} \right)^{n} \]

证明从略,可以看这里

注意逆推式子的时候不要忘了 \(F(x)\) 0 次项为 0,否则推出来的复合逆是错的因为根本就没有复合逆。

扩展拉反

值得一提的是我们有上式的扩展形式:

\[[x^n]H(F(x)=\frac{1}{n} [x^{n-1}] H'(x) \left( \frac{x}{G(x)} \right)^{n} \]

一个例子:尝试计算 \([x^n]F(x)^m\),其中 \(F(x)\) 是卡特兰数的生成函数。

solution

\(G(x)=xF(x)\),由于我们有 \(xF(x)^2+1=F(x)\),那我们就有 \(x \left( \frac{G(x)^2}{x^2}\right)+1=\frac{G(x)}{x}\),就是 \(G(x)-G(x)^2=x\),于是 \(G(x)\) 的复合逆就是 \(x-x^2\)

我们要求的是 \([x^{n+m}]G(x)^m\),扩展拉反变成

\[\frac{1}{n+m}[x^{n+m-1}] m x^{m-1} \left( \frac{x}{x-x^2}\right)^{n+m} \]

\[\frac{m}{n+m}[x^{n}] \left( \frac{1}{1-x}\right)^{n+m} \]

\[\frac{m}{n+m}\binom{2n+m-1}{n} \]

另外一个例子:ABC222H

solution

题解

还有一个 EI 论文里的例子,简单的普及组计数题:求有多少字符集大小为 \(m\),长度为 \(nk\) 的字符串使得每次删除相邻相同的 \(k\) 个字符可以全删完。

solution

首先,若 \(k=2\),那么这个题就是简单的括号匹配,我们考虑计数括号森林,但是有一个问题是一个方案可能对应多种括号森林,为此我们钦定一种顺序使得括号树上父亲和所有孩子不同色,不合法可以调整,且若合法则对应方案唯一。构造生成函数就是把>一个森林连上一个点构成一棵树进行递归。

\(k>2\) 的情况是相似的,只不过一个节点下可能有多个森林连着,不难得到树的生成函数为 \(F(x)=\frac{x}{\left( 1-(m-1)F \right)^{k-1}}\),答案就是 \([x^n]\frac{1}{1-mF}\),注意此时我们先不给根染色,等到算答案的时候再决定。

这个形式没有 0 次项,可以直接扩展拉反,得到 \(F^{<-1>}(x)=x \left( 1-(m-1)x \right)^{k-1}\),后面不想写了,直接对着式子往上展开然后 lucas 定理搜一下就行。

另类拉反

同样的,若 \(F(x)\)\(G(x)\) 互为复合逆,\(H(x)\) 为任一生成函数,有如下式子:

\[[x^n] H(F(x)) =[x^n] H(x)G'(x)\left( \frac{x}{G(x)} \right)^{n+1} \]

PGF 处理停时问题的一些技巧

其实就是 myee 2024 论文的阅读笔记。

直接刻画停时过程

如果一个随机过程的停时为 \(t\) 的概率是 \(P(T=t)\),设其 PGF 为 \(F(z)=\sum P(T=t)z^t\),则通过期望定义可以得到 \(E(T)=F'(1)\)

但有时候不太方便直接求出 \(F\),在一些方便刻画停时过程的问题里,我们可以先设一个 \(G(z)\) 表示在 \(t\) 时刻还没停止的概率的生成函数,不难得到:

\[F(z)+G(z)=1+zG(z) \]

即考虑每个时刻的所有可能状态:停时或不停时都是由上一个状态转移而来。等式两边求导,再带入 1 可以得到:

\[F'(1)=1+G(1) \]

于是我们也可以用 \(G(z)\) 来描述期望停时,上式的组合意义即为期望停时为各个位置没停的概率之和,也就是在某处停了的概率在前面都算过了一遍,刚好乘上了贡献。

一个简单的例子:P4548 歌唱王国:给出一个字符串,字符集大小为 \(m\),长度为 \(n\),每次随机报一个字符,出现该字符串时停止,问期望停时。

solution

按照上面的方法设出 \(F(z)\)\(G(z)\),我们还需要一个关系解出两个生成函数,考虑往没停时的串末尾塞原串,此时一定会提前一个 border 停时,border 可以为空,于是你就能得到:

\[(\frac{z}{m})^n \times G=\sum_{j} (\frac{z}{m})^{n-j} \times F \]

其中 \(j\) 是原串的一个 border,然后把 \(F\)\(G\) 带入就能得到答案为 \(\sum_j m^j\)

上面的例子的随机过程比较简单,有的时候我们可能会遇到多个过程的拼接,此时可以考虑使用 EGF 方便我们对过程归并,但是有一个问题是我们最后还是得求一个 OGF 的封闭形式,因为最后我们不是求系数而是带值。

在实践中我们常常遇到的 EGF 可以表示成 \(\sum z^ae^{bz}\) 的形式,而这个的 OGF 是好求的,就是 \(\frac{a! z^a}{(1-bz)^{a+1}}\),证明不难,具体可以考虑乘完之后转成 OGF 时要带上的系数,转化一下形式就是后面的式子。

一个例子:AGC038E

solution

直接设 \(F(z)\) 表示停时概率的 PGF,然后枚举最后一步被抽到的是哪个,其他的个数随便选,不难得到以下式子:

\[1+\left(\mathcal{L}\left(\sum_{i=1}^{n} \frac{\left(A_{i} z / S\right)^{B_{i}-1}}{\left(B_{i}-1\right)!} \prod_{j \neq i}\left(\exp \left(A_{j} z / S\right)-\sum_{k<B_{j}} \frac{\left(A_{j} z / S\right)^{k}}{k!}\right)\right)\right)^{\prime} \circ 1 \]

\(\mathcal{L}\) 是转 OGF 的算符,像上面说的那样换元,用 \(u \leftarrow e^z\),然后暴力拆开算就能得到一个关于 \(u\)\(z\) 的多项式,计算每一项对答案的贡献即可。

例子:PKUWC 2018 猎人杀

solution

注意到这个答案其实等价于可以重复抽,1 最后一个被抽到的概率,直接设 \(F(z)\) 表示停时概率的 PGF,然后就有

\[\frac{w_{1}}{S}\left(\mathcal{L}\left(\prod_{j=2}^{n}\left(\exp \left(w_{j} z / S\right)-1\right)\right)\right) \circ 1 \]

使用一些多项式技巧类似处理即可。

把若干停时过程拼起来

很多时候停时的过程没办法像上面的例子一样清晰地刻画,另外一种技术是考虑一个间接计数的方法,下面只讨论停时方案唯一的情况。设 \(F(z)\) 表示第一次停时的概率生成函数,\(H(z)\) 表示第 \(t\) 个时刻停时了的概率生成函数,\(G(z)\) 表示停时后经过 \(t\) 个时刻又停时了的概率生成函数,可以得到:

\[H(z)=F(z)G(z) \]

\[F(z)=\frac{G(z)}{H(z)} \]

如果能得到 \(G\)\(H\),那么也可以尝试推出 \(F\)

如果 \(G\)\(H\) 能被表示为 \(\sum A_j \exp(\frac{jz}{n})\),那么我们有更好的表达式,对上式子两边求导并带入可得答案为 \(\sum_{j\neq n} \frac{n(A_{n}B_{j}-B_{n}A_{j})}{B_{n}^{2}(n-j)}\),注意此时我们假设 \(B_n \neq 0\),不然分母会出现 0,当 \(A_n=B_n\) 上式则变成 \(\sum_{j\neq n} \frac{n(B_{j}-A_{j})}{B_{n}(n-j)}\)

例子:ZJOI 2019 开关

solution

\(u=\exp(\frac{z}{S})\),可以得到:

\[\hat{G}=\prod_{j=1}^{n}\frac{u^{p_{j}}+u^{-p_{j}}}{2},\hat{H}=\prod_{j=1}^{n}\frac{u^{p_{j}}+(-1)^{s_{j}}u^{-p_{j}}}{2} \]

暴力求出关于 \(u\) 的多项式,带入上式计算即可。

posted @ 2025-02-09 20:28  eastcloud  阅读(97)  评论(1)    收藏  举报