cmd 博客乱学
指的是 多项式计数杂谈 , 炫酷反演魔术 ,min-max容斥小记 和 单位根反演小记 。
主要学的是前面两个,后面两个是前面的子项。
本文中的例题,除了单独的链接,其他没有写代码,自己乱推的,不保证完全正确。
多项式计数杂谈
若干数学知识
不讲了。
生成函数引入
不讲了。
一些数列的轻量级推导
首先是一些基本的生成函数封闭形式要认识一下。
还有几个用二项式瞎几把推的玩意。
斐波那契类问题
把一个生成函数用它自己的形式表示。注意边角项。
你会拆出来一个式子,以斐波那契为例。
你发现下面这个方程有两个根,根据牛逼定理,你大力猜这玩意可以裂项。
然后你就设
然后手动解个方程。
之后你可以用这两个东西直接搞出通项公式。
如果模意义下缺点东西的话,可以扩域。
特征方程
如果你觉得上面那个方法太烦,可以试试特征方程。
它用来解决
一类的问题。
有更高维的形式,但是比较麻烦,不搞了。
你假装
\(f\) 是一个公比为 \(q\) 的等比数列。
然后你可以得到
你根据这个方程搞出 \(q_1, \ q_2\) 。
然后
根据前两项的值解出 \(\phi_1\) 和 \(\phi _2\) 就行了。
证明:
你觉得我会?
构造幂级数的小技巧
平移和拉伸。
常系数齐次线性递推
其实就是手动把一些项补齐吧。
分式分解
这是什么鸡儿玩意。
卡特兰数
有通项公式
把两边的生成函数写出来
当 \(x = 0\) 的时候,\(C = 1\) 。如果上面取正号,会搞出非零数除以零,寄。
所以
如何搞成更优美的形式,需要广义二项式定理。
生成函数组合计数初步+多项式工业练习
组合对象
指满足某一性质的可数的对象。
笛卡尔积
称 \(\{(a_1,a_2,...,a_n)|a_1 \in A_1,a_2 \in A_2,...,a_n \in A_n\}\) 为 \(A_1,A_2,...,A_n\) 的笛卡尔积。
其实就是每个集合选一个元素,组成的有序多元组的集合。
OGF
ordinary generating function.
两个 OGF 的乘法是经典的加法卷积。
OGF 的加法代表不相交集合的并。
OGF 的乘法代表笛卡尔积
例题:
CF438E The Child and Binary Tree
EGF
exponential generating function.
设有数列 \(f_n\) ,其 EGF 为 \(F(x) = \sum_{i=0} f_i {x^i \over i!}\)。
就是在第 \(i\) 项除了个 \(i!\)。
两个 EGF 的乘法是二项加法卷积
证明:
得证。
常用的 EGF:
(有标号对象的)笛卡尔积
将两个集合拼起来时,要用组合数分配标号。
例题:
LG5219 无聊的水题 I LG5339 [TJOI2019] 唱、跳、rap和篮球
exp 的组合意义
这个的意义是多次卷积拼接自己。
例题:
PGF
probabilistic generating function.
对于离散随机变量 \(X\) ,约定 \(X \in N\)
其概率生成函数为
显然有 \(F(1) = 1\)。
这玩意可以求导与期望产生联系
进一步扩展
例题不会。
关于上面三种 GF 的例题:
51nod1514
设 \(f_i\) 表示长度为 \(i\) 的合法排列个数。
容斥一下,不满足条件等价于在中间劈开,左边的数形成一个排列。
注意右边如果随便的话,就会算重。所以要保证左边加右边的前缀不是一个排列。
枚举左边的长度,得到
移项
设 \(g_i = i!\),大力整一发 OGF
然后没了。
CTS2019 珍珠
LG5850 calc加强版
先把这玩意搞成无序的。
容易看出,答案是
按照套路,两边取 \(\ln\)。
上面这玩意就变成了
然后你大力 EGF 搞出自然数幂和,就可以推倒了 /se 。
LG5860 Counting Trees
那必然是在 prufer 序列上搞事了。
答案相当于
在通常情况下,右边这玩意不好直接 \(\ln\)。
对于 \(v_i \leq 2\) 的,那就瞎几把特判一下,搞出一个 \(F\)。
对于 \(v_i > 2\) 的,那就瞎几把 \(\ln\),搞出一个 \(G\)。
然后把 \(F\) 和 \(G\) 卷起来就行了。
LOJ6503 Magic
把一种颜色分成 \(j\) 段,就会产生 \(a_i - j\) 个相邻。这样会有 \({a_i - 1\choose j-1}\) 种方法。
所以一种颜色的 EGF 就是
分治 NTT 把它们卷在一起。
那么硬点分成 \(k\) 段,其他随便的方案数就是 \(f_k = [x^k] \prod A_i\)。
恰好 \(k\) 个相邻要求分成 \(n-k\) 段。
设 \(g_i\) 表示恰好 \(i\) 段的方案数。
有
二项式反演一下
然后无了。
LG6516 Quark and Graph
不出意外的话,这题会是模拟赛题。
到时候应该会有一个专门的题解。
CF923E Perpetual Subtraction
不会,有时间再补。
upd:nmd 这题被扔进模拟赛里了,不得不做。
写出式子之后就是一路爆推。
没意思。
关于二项式
拆开组合数
很 trivial ,不讲了
经典二项式定理
很 trivial,不讲了
加法递推公式
这玩意可以优化组合数递推式,可以裂项,用于凑出系数。
推论和技巧:
上面两个都可以用从左到右 merge 的方法证明。
例题:
ARC061F
第一步转化没想到。但是后面的自己推出来了。
首先你要把它转化成一个序列对吧。
我这边的计数方法和其他人的有点不一样。
那么在这个数列里,\(A\) 会出现 \(n-1\) 次,\(B\) 出现不超过 \(m-1\) 次,\(C\) 出现不超过 \(k-1\) 次。且最后一次出现的一定是 \(A\)。
那么大力枚举序列的长度。再枚举 \(B\) 的出现次数。
像上面所说,此时的 \(i\) 有限制。\(i \leq m-1\) 且 \(len-(n-1)-i \leq k-1\)。
所以右边实际上是
那么我们记
那么我们就想 \(f(l,r,a) \rightarrow f(l+1,r,a+1)\)。
考虑做差
然后你就可以愉快地递推了。
范德蒙德卷积
组合意义挺显然的。
例题:
LG2791 幼儿园篮球题
感觉比较简单。写出最原始的式子之后就一路挺显然的。
有一个
广义二项式系数,广义二项式定理
广义二项式系数
其中 \(\alpha\) 是实数。
广义二项式定理
一些衍生技巧
上指标反转
对于 \({2n \choose n}\) 型组合数:
先考虑把 \({n - {1 \over 2} \choose k}\) 写成一些组合数的乘积。
用加倍公式
令 \(x=k=n\) ,再同时除以 \(n!^2\),可以得到
用上指标反转,得到
这时可以搞出
逆用广义二项式定理,搞出上面这玩意的封闭形式是
下降幂和上升幂的二项式定理
限制 \(n\) 是自然数
跟普通幂的没啥区别。
差分与前缀和
一个数列的一阶前缀和相当于卷上了一个 \(1 \over 1-x\)。
\(n\) 阶前缀和就是卷了个 \(1 \over {(1-x)}^n\)。
差分就是卷 \((1-x)\),然后平移。
例题:
LG4458 链上二次求和
这个例题跟这个知识点有啥关系啊喂。
把这玩意搞出一个前缀和 \(s_i\)。
把前缀和 \(s_i\) 再搞个前缀和 \(ss_i\)
然后乱维护 \(s\),\(ss\) 就可以了。就变成一个 ds 问题了。
牛顿级数
不会。
生成函数与杨辉三角
把杨辉三角写成二元 GF
在组合数特定方向求和的时候,可以用这玩意搞出 GF,然后直接从封闭形式搞出点好玩的东西。
其他特殊数
斯特林数
基本的东西不讲。
例题
CF932E Team Work
什么垃圾题。
LG4609 [FJOI2016] 建筑师
什么第一类 Stirling 数神仙题。
CF960G Bandit Blues
这 tm 不是跟上一题一样吗。
CF961G Partitions
第一眼:不会
第二眼:瞪出来一个式子,然后 NTT 同一列斯特林数就可以了哈哈哈。
核心是化简这样一个东西
然后你直接拆斯特林数,直接推就行了。
CF715E Complete the Permutations
不会。mark 一下,以后补。
伯努利数
不会。不想学。
欧拉数
不会。不想学。
分拆数
不会。不想学。
(你怎么啥也不想学 /fn)。
后面的学个锤子。我爬了。

浙公网安备 33010602011771号