重学计数
前言
正如标题,想重学一遍计数。
其实也不是完全意义上的重学啦。
重点会放在生成函数、推式子上。
多项式....不想搞诶....可生成函数必须要多项式科技诶...
应该会简单摄入吧...
需要记住的公式
组合数相关
-
大致证明:在 \(n+m\) 个元素中选 \(k\) 个 \(=\) 在前 \(n\) 个元素中选 \(i(0\le i\le k)\) 个 \(\times\) 在后 \(m\) 个元素中选 \(k-i\) 个。
-
另有:
-
\[\sum_{i=0}^n \binom{n}{i}^2 = \sum_{i=0}^n \binom{n}{i}\binom{n}{n-i}=\binom{n+n}{n} \]
- 大致证明:从 \((0,0)\) 走到 \((n+1,m-n+1)\) 的方案数 \(=\) \(\sum_{i=0}^m\)从\((0,0)\)走到\((n,i-n)\)的方案数 。
-
将二项式定理扩展到复数域。
-
当前有用的只是推广到负数上,比如这个:
-
\[\begin{aligned} \dfrac{1}{(1-x)^n}&=(1-x)^{-n}\\ &=\sum_{i\ge0}{\dfrac{(-n)(-n-1)...(-n-i+1)}{i!}\cdot (-x)^i}\\ &=\sum_{i\ge0}{\dfrac{n(n+1)...(n+i-1)}{i!}\cdot x^i}\\ &=\sum_{i\ge0}{\binom{n+i-1}{i} x^i} \end{aligned} \]
-
现在还有一个了:
-
\[(1-4x)^{-\frac{1}{2}}=\sum_{i\ge 0} \binom{2i}{i}x^i \]
上升/下降幂与普通幂
- 拆普通幂的重要公式,用于 \(n\) 特别大的情况。
- 可以证明 \(\sum_{i}^n i^k\) 是关于 \(n\) 的 \(k+1\) 次多项式。
- 同样用于 \(n\) 特别大的情况。
上升幂一般用的比较少,所以就不列了。
遇到的其他式子
暂无!
生成函数
感觉网上的一些博客都好奇怪啊...
给你讲一大堆生成函数的一些操作,却不告诉你具体怎么用,而且还要带一堆多项式...
普通型
P6078 [CEOI2004] Sweets
感觉最适合入门的生成函数题,完美的告诉你生成函数怎么用。
对于第 \(i\) 种糖, 都只有一种方法拿走 \(j\) 颗这种糖 \(j\le m_i\),它的生成函数就是这个样子:\(f_i(x)=1+x+x^2,..., x^{m_i}\)
然后 \(n\) 种糖方案组合起来就是对应生成函数的卷积,即 \(F=f_1f_2...f_n\) 。
所以答案就是 \(F\) 第 \(a\sim b\) 项上的系数之和。(这个可以先转换为 \((0\sim b)-(0\sim a-1)\))
可现在这样还是不能做。
但是生成函数可以转换成封闭形式(实际上就是转换成了一种好算的形式)
即 \(f_i(x)=1+x+x^2,..., x^{m_i}=\frac{1-x^{m_i+1}}{1-x}\) 。
所以 \(F=\dfrac{\prod_{i=1}^n(1-x^{m_i+1})}{(1-x)^n}\) 。
现在分子的每一项系数我们可以求了(直接暴力 \(2^n\) 展开)
可分母是什么鬼呢?
注意上面我们列出的式子:\(\frac{1}{(1-x)^n}=\sum\limits_{i\ge0}{\binom{n+i-1}{i} x^i}\)
所以对于分子的一项系数 \(ax^b\) ,对 \((0\sim k)\) 的贡献就是 \(a\sum\limits_{i=0}^{k-b}\binom{n+i-1}{i}=\binom{n+k-b}{n}\) 。
这样,除了这题屎一样的模数,就做完了。
2022.2.28 T2
已知 小x 在 \((1,A)\),只向右向下走走到 \((B,1)\),小y 在 \((1,1)\),只向右向上走走到 \((B,A)\)。每一时刻只能让 小x 或 小y 一个人走一步,求 小x、小y 有且仅有在某一时刻在同一坐标上的方案数。
数据范围 \(A,B\le 10^7\) 。
先将坐标都同时减一。
设 \(g_{i,j}\) 为x和y走到 \((i,j)\) 并相遇的方案数,\(f_{i,j}\) 为x和y走到 \((i,j)\) 并第一次相遇的方案数。
则有转移:
所以我们如果我们设
那么就有:
根据上面的式子又有 \(H(x)=\frac{1}{\sqrt{1-4x}}\) 。(王总好像可以用积分、求导爆推%%%)
所以 \(F_j=G_j\cdot H^{-1}=G_j\sqrt{1-4x}\) 。而
这样我们可以 \(O(B)\) 直接求出 \([x^B]G_0^2\) 。
P3978 [TJOI2015]概率论
设 \(f_n\) 表示 \(n\) 个点的二叉树个数,\(g_n\) 表示 \(n\) 个点的所有二叉树的叶节点总数。
先考虑 \(f\) ,有转移:
发现后面就是 \(F(x)^2\) 的第 \(n-1\) 项,所以就有:
所以可以解出 \(F(x)=\frac{1\pm\sqrt{1-4x}}{2x}\) 。
如果我们把 \(x=0\) 带入可得 \(f_0\) 的值,发现 \(\lim\limits_{x\to 0}\frac{1-\sqrt{1-4x}}{2x}=1,\lim\limits_{x\to 0}\frac{1-\sqrt{1-4x}}{2x}=\infty\) ,所以 \(F(x)=\frac{1-\sqrt{1-4x}}{2x}\) 。(其实这就是卡特兰数的生成函数啦)
再考虑 \(g\) ,同样先考虑转移:
同样也有 \(G(x)=2F(x)G(x)+x\) ,(这里初值为 \(g_0=0,g_1=1\))
所以可以解出:\(G(x)=\frac{x}{\sqrt{1-4x}}\) 。
现在就要把 \(F(x),G(x)\) 转成可以递推的形式。
对于 \(g\),\((1-4x)^{-\frac{1}{2}}\) 很熟悉,分子是 \(x\) 就表示向右移一位,即 \(g_n=\binom{2n-2}{n-1}\) 。
而 \(f\),先要考虑化 \((1-4x)^{\frac{1}{2}}\) ,同样用扩展二项式:
那么 \(f_n=\dfrac{\binom{2n}{n}}{n+1}\) (因为除了 \(2x\) ,向左移了一位,同时上面分子中的 \(2\) 就没了)
所以 \(\frac{g_n}{f_n}\) 就出来了。
P4451 [国家集训队]整数的lqp拆分
先咕了。
这个用特征方程解 常系数齐次线性递推 的例题。
指数型
其实和普通型查不了多少,或者说普通型的怎么用,那么指数型的就怎么用。
为什么叫指数型,就是如果有一个生成函数 \(F(x)=\sum\limits_{i=1}^{\infty} \frac{x^i}{i!}\) ,那么他的封闭形式就是 \(F(x)=e^x\) 。
其他的该怎么用就怎么用。
CF891E Lust
设 \(b_i\) 为第 \(i\) 个数的操作次数,那么这一次操作对答案的贡献为 \(\prod a_i-\prod(a_i-b_i)\) ,\(\prod a_i\) 是不变的,那么我们就只用考虑 \(\prod (a_i-b_i)\) 的期望,最后再用 \(\prod a_i\) 减去即可。
所以考虑这样的 \(\{b_1,b_2,...,b_n\}\) 出现的次数,那么就是 \(\binom{k}{b_1,b_2,...,b_n}=\dfrac{k!}{\prod b_i!}\) ,由此可以设生成函数:
那么最终的生成函数
后面的 \(\prod_{i=1}^n(a_i-x)\) 是可以暴力转化成 \(n\) 次多项式的,那么 \([x^k]F(x)=\sum_{i=0}^n \frac{b_in^{n-i}}{(n-i)!}\) 。
最后就要求 \(\frac{[x^k]F(x)n!}{n^k}\) 。
一个比较综合的运用
P4931 [MtOI2018]情侣?给我烧了!(加强版)
设 \(f_i\) 为 \(i\) 对情侣坐 \(2i\) 椅子并且完全错排的方案数。
那么有 \(k\) 对配对的方案数,答案就为 \(\binom{k}{n}^2f_{n-k}2^kk!\) ,把 \(k \in [0,n]\) 的答案全加起来,自然是全部排列的方案数:
拆掉 \(\binom{n}{i}^2\) :
然后设生成函数:
得 \(H(x)=F(x)G(x)\) 。
所以 \(G(x)=\frac{H(x)}{F(x)}=e^{-2x}(1-4x)^{-\frac{1}{2}}\) 。
其实你把后面的拆开就会得到由容斥推出来的式子,所以说生成函数真的很无脑。
但是这还不够,你需要求出 \(f_i\) 的递推式。
这时候我们会给 \(G(x)\) 求个导,来进行转化,如:
所以就有 \(G'(x)-4xG'(x)=8xG(x)\) 。
即 \([x^n]G'(x)-4[x^{n-1}]G'(x)=8[x^{n-1}]G(x)\) 。
又因为 \([x^n]G'(x)=(n+1)[x^{n+1}]G(x)\) 。
所以 \((n+1)g_{n+1}-4ng_n=8g_{n-1},g_n=\frac{f_n}{n!n!}\)
就可以得到递推式:\(f_{n+1}=4n(n+1)f_n+8n^2(n+1)f_{n-1}\) 。
小结
上面的一些题就是基本生成函数的例子,都是没有用多项式科技的好题qwq。
之后会不会入多项式这个坑呢?
不知道,反正先要去搞其他的知识点了。