[正睿集训2021] 生成函数
导数
这里补充一些基础知识,先介绍一下所谓链式法则,也就是复合函数的求导:
然后根据导数的基本定义就可以证明这个法则了,还有一个可以证明的分部法则:
再讲一个东西 \(ln(x)\) 怎么求导:
然后 \(ln\) 里面就是这个东西:\(\lim_{n\to\infty} (1+\frac{1}{n})^n=e\),所以 \(ln(x)'=\frac{1}{x}\)
譬如对于 \((1-x)^{-1}\) 求导,就不要乱用结论了,老实通分去算就行了。
泰勒展开
在生成函数中常用,取一个点 \(x_0\) 来逼近原函数的方法:
生成函数推通项
这个东西还是很常用的,思路就是我们先把原函数乘几下,然后相减只剩下低次项,就可以得到原函数的闭形式,再把闭形式展开就可以得到通项式了。
例1
首先我们来推一下 斐波那契数列的通项公式 :
上面的等式是可以展开了,先用求根公式把它化成两个闭形式相乘,然后两个闭形式分别展开,就可以得到斐波那契数列的通项公式了。
例2
下面我们来推一下 卡特兰数的通项公式 ,设 \(G(x)\) 表示卡特兰数的生成函数。
那么不难建立 \(G(x)\) 和 \(G(x)^2\) 的等式关系:
这里解出了两种闭形式,但有一种需要舍去,当 \(G(x)=\frac{1+\sqrt{1-4x}}{2x}\) 时,则 \(\lim_{x\to0}G(x)=\infty\),这与 \(G(x)\) 的常数项为 \(1\) 矛盾。那么 \(G(x)=\frac{1-\sqrt{1-4x}}{2x}\),现在的问题变成了把这个闭形式展开。
先搞 \(\sqrt{1-4x}\),可以用泰勒展开,我们在 \(x=0\) 处展开它,求几次导就发现展开的结果是:
故 \(c_k=\frac{1}{2}\frac{1\cdot 3\cdot\cdot\cdot(2k-1)}{2^{k+1}}\frac{4^{k+1}}{(k+1)!}=\frac{(2k)!}{(k+1)!k!}=\frac{1}{k+1}{2k\choose k}\)
例3
下面我们来推一下 杨辉三角里对角线和的通项公式 ,即 \(a_n=\sum_{i=0}^n{n+i\choose2i}\)
发现上面的柿子很像二项式展开的形式,但是 \(b\) 是偶数这个要求很烦人,如果 \(b\) 是奇数那他的结果就不会计入 \(x\) 的整数次方了,所以有这些项也不用管,那么就可以写成下面的形式:
设 \(F(x)=\frac{1}{1-x-x^2}\) 是斐波那契数列的母函数,那么 \(A(x^2)=F(x)\)
对应一下系数就会发现 \(a_n=fib(2n)\)
求母函数的闭形式
例1
求序列 \(<1,3,5...2n-1...>\) 作为系数的母函数闭形式:
这个 \((i+1)\) 可以通过求导消去,这样就好写闭形式了,对母函数求导等价于对闭形式求导:
例2
求圆排列 \(c_n=(n-1)!\) 的指数型母函数:
你可能觉得上面的东西化不动了,你要知道 \(ln(1+x)\) 在 \(0\) 处的泰勒展开是这样的:
同理,我们把 \(x\) 换成 \(-x\) 就可以得到:
那么原式又可以化简了。
还有一个梦幻联动,设 \(\hat P(x)\) 是全排列代表的指数型母函数:
剩下还有两个例题是真的肝不动了,康康oneindark的博客吧。
大朋友和多叉树
题目描述
定义一棵树是合法的,当且仅当每个节点的孩子个数都在给定集合 \(D\) 中,求有多少棵不同的,叶节点个数为 \(s\) 的合法树。
\(s\leq 1e5,|D|\leq 1e5\),\(2\leq d[i]\leq s\)
解法
设 \(f(i)\) 为根节点权值为 \(i\) 的树有多少个,\(F(x)\) 表示其生成函数,如果我们枚举孩子的个数,就能得到这样的方程:
其中单个的 \(x\) 表示是叶子的情况,这种情况不能被转移到所以要加上,改下写法可以用 拉格朗日反演 :
设 \(G(x)=x-\sum_{j\in D}x^j\),还有 \(G(F(x))=1\),由于知道了 \(G(x)\) 可以反演出 \(F(x)\) 的任意一项:
然后考虑怎么求这个柿子,因为 \(G(x)\) 的常数项为 \(0\) 所以不能直接求逆元,因为 \(G(x)\) 有一次项所以我们把他左移一格就行了,设左移之后的生成函数是 \(G'(x)\),求 \(G'(x)\) 在模 \(x^n\) 意义下的逆元即可,体现在式子上是这样的:
类似地,如果最低位是 \(k\) 次项那么左移 \(k\) 就行了。
[TJOI2015] 概率论
题目描述
解法
因为 \(n\) 个节点的二叉树个数就是卡特兰数 \(g(n)\),那么我们算出各种情况的总叶子个数就行了,设 \(f(n)\) 表示总叶子个数,那么转移:
设 \(G(x)\) 是卡特兰数的生成函数,\(F(x)\) 是答案的生成函数,那么有:
那么带入 \(G(x)=\frac{1-\sqrt{1-4x}}{2x}\) 就可以得到 \(F(x)=\frac{x}{\sqrt{1-4x}}\),因为我们知道 \(g(n)=\frac{1}{n+1}{2n\choose n}\),看看能不能把 \(f(n)\) 也找出通项公式来。由于两者的生成函数是很相像的,可以借助卡特兰数来得到通项公式:
所以对于单个的项来说:\(f_{n+1}=(n+1)g_n\),那么答案就是 \(\frac{ng_{n-1}}{g_n}=\frac{n(n+1)}{2(2n-1)}\)