A Day With: Mathematics

image

闲话:

最近看 npesta 看的有点多,于是标题起的这个。

为什么一个非 GD 人会这么关注 GD 啊。

被 Limbo 震撼到了,尤其是最后的钥匙段,我一直盯着钥匙看了十几次也没看成功一次,GD 人太可怕。


决定在我还有一定理智的时候把我一直没看明白的东西写下来。

虽然还是不理解吧。

我是萌新,不要 D 我 qwq

拉格朗日反演

我们记 \(F(G(x)) = x\) 的两个多项式 \(F(x)\)\(G(x)\) 为复合逆。

首先有一个性质:若 \(F(G(x)) = x\),那么 \(G(F(x)) = x\)

我问 jjdw 这东西咋证明的,我忘了当时 jjdw 有没有给我证明了,反正我不会证。

拉格朗日反演:如果 \(F(x)\)\(G(x)\) 互为复合逆,且 \(F(x)\)\(G(x)\) 常数项为 \(0\),一次项系数不为 \(0\),那么:

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

证明看不懂,咕了。

还有个扩展拉格朗日反演:

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

另类形式:

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

卡特兰数

众所周知卡特兰数生成函数 \(C(x)=xC(x)^2 + 1\)。我们尝试凑 \(x\),首先把常数项去掉,那么设 \(F(x)=C(x) - 1\),那么就有 \(F(x) = x(F(x) + 1) ^ 2\)\(\frac{F(x)}{(F(x)+1)^2}=x\),那么 \(G(x)=\frac{x}{(x+1)^2}\)

根据拉格朗日反演,\([x^n]F(x)=\frac{1}{n}[x^{n-1}](x+1)^{2n}=\frac{1}{n}\binom{2n}{n-1}=\frac{1}{n+1}\binom{2n}{n}\)

大朋友和多叉树

求有 \(n\) 个叶子的无标号有根树的数量,满足非叶子节点的度数属于集合 \(A\),儿子有顺序。

考虑直接写出答案的生成函数:\(F(x)=\sum_{i \in A} F(x)^i + x\)\(F(x)\) 没有常数项,那么可以直接凑出 \(F(x) - \sum_{i \in A} F(x)^i = x\),那么 \(G(x) = x - \sum_{i\in A}x^i\)

根据拉格朗日反演,\([x^n]F(x)=\frac{1}{n}[x^{n-1}]\left(\frac{x}{G(x)}\right)^n\),多项式求逆加多项式快速幂即可。

[ABC222H] Beautiful Binary Tree

理性偷税。

首先不难转化题意为求满足相邻两个点的数不全为 \(0\),且根节点为 \(1\) 的二叉树数量。

我们设 \(f_{0/1,n}\) 为根节点为 \(0/1\)\(n\) 个节点的二叉树的数量,那么有:

\[f_{0,n} = 2 f_{1, n} + \sum_{i=0}^n f_{1,i} f_{1, n-i}, f_{0, 1} = 0 \]

\[f_{1,n} = 2 (f_{0, n - 1} + f_{1, n - 1}) + \sum_{i=0}^{n-1} (f_{0, i} + f_{1,i}) (f_{0, n-1-i} + f_{1, n-1-i}), f_{1, 1} = 1 \]

写成生成函数:

\[F_0(x) = 2F_1(x) + F_1(x)^2 \]

\[F_1(x) = x(1 + 2(F_0(x) + F_1(x)) + (F_0(x) + F_1(x)) ^ 2) = x(F_0(x) + F_1(x) + 1) ^ 2 \]

直接把 \(F_0(x)\) 代进去:

\[F_1(x) = x(F_1(x)^2 + 3F_1(x) + 1)^2 \]

然后找复合逆:

\[x = \frac{F_1(x)}{(F_1(x)^2 + 3F_1(x) + 1)^2} \]

\[G(x) = \frac{x}{(x^2+3x+1)^2} \]

那么就可以直接套拉格朗日反演了:

\[\begin{aligned}[] [x^n]F_1(x) &= \frac{1}{n} [x^{n - 1}] (x^2+3x+1)^{2n}\\ &= \frac{1}{n}\sum_{i=0}^{2n}\binom{2n}{i}[x^{n-1}]x^{2i}(3x+1)^{2n-i}\\ &= \frac{1}{n}\sum_{i=0}^{2n}\binom{2n}{i}\binom{2n-i}{n-2i-1}3^{n-2i-1}\\ \end{aligned} \]

复杂度 \(O(n)\)

好了知道了 joke 你可以不用说了。

概率生成函数

不知道有没有用,反正我是闲的。

定义

定义一个非负整数随机变量 \(X\) 的概率生成函数 \(F_X(x)\)\(F_X(x)=\sum_{i\ge 0} P(X=i) x^i\)

首先众所周知 \(\sum_{i\ge 0} P(X=i) = 1\),那么也就是说 \(F_X(1)=1\)

期望值

\[\begin{aligned} E(X) &= \sum_{i \ge 0} i P(X=i)\\ &= \sum_{i \ge 0} P(X=i) i 1^{i-1}\\ &= F_X'(1) \end{aligned} \]

那么就是说,期望值就是生成函数的导数。

根据这个我们还可以推出另一个结论:\(E(X^{\underline{k}})=F^{(k)}_ X(1)\)

方差

\[\begin{aligned} D(X) &= E(X^2) - E(X)^2\\ &= E(X^{\underline 2}) + E(X^{\underline 1}) - E(X)^2\\ &= F_X''(1) + F_X'(1) - F_X'(1)^2 \end{aligned} \]

这给我们提供了一种不需要求概率就能计算期望或方差的方法。

卷积

没啥意思,就 \(F_{X+Y}(x) = F_X(x) F_Y(x)\),原因显然。

[CTSC2006]歌唱王国

题意:给定一个长为 \(n\) 的序列 \(A\),有一个序列 \(B\),初始为空,每次随机添加一个 \([1,m]\) 的数,当 \(B\) 中出现 \(A\) 序列时停止,问期望多少步结束?

我们设 \(f_i\) 为在第 \(i\) 步结束的概率,其概率生成函数\(F(x)\)

\(g_i\) 为第 \(i\) 步时还没结束的概率,其普通生成函数\(G(x)\)

首先,我们考虑给仍未结束的序列加入单独的一个数,那么必然有 \(f_i + g_i = g_{i - 1}\),并且 \(f_0 = 0, g_0 = 1\),于是可以得到生成函数的关系 \(F(x) + G(x) = 1 + xG(x)\)

两边求导,得到 \(F'(x) + G'(x) = G(x) + xG'(x)\)

我们要求的期望值就是 \(F'(1)\),于是代入 \(x=1\),得到 \(F'(1) = G(1)\),那么我们想办法求 \(G(1)\)

考虑给仍未结束的序列加入整个 \(A\) 序列。那么加入完成之后一定会结束,但是有可能提前结束,因为可能加入的一段前缀是 border,正好提前组成了 \(A\) 序列。那么可以写出以下式子:

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

\(a_i\) 表示长度为 \(i\) 的前缀是否为 border。

那么我们代入 \(x=1\),就有 \(G(1) m^{-n} = \sum_{i=1}^n a_i m^{i-n}\),即 \(G(1) = \sum_{i=1}^n a_i m^i\)

那么期望值就是 \(G(1) = \sum_{i=1}^n a_i m^i\)

magic.

还有几个例题咕了。

感觉概率生成函数能解决的问题都和无穷过程求结束时间的期望值,所以这些题能不能用鞅与停时定理来做?

待考察。

好了今天的理智值用光了,大家再见。

posted @ 2023-01-28 18:10  APJifengc  阅读(156)  评论(6编辑  收藏  举报