cmd 博客乱学

指的是 多项式计数杂谈炫酷反演魔术min-max容斥小记单位根反演小记

主要学的是前面两个,后面两个是前面的子项。

本文中的例题,除了单独的链接,其他没有写代码,自己乱推的,不保证完全正确。

多项式计数杂谈

若干数学知识

不讲了。

生成函数引入

不讲了。

一些数列的轻量级推导

首先是一些基本的生成函数封闭形式要认识一下。

1,1,1,1,...=11xn=0cnxin=11cxi

还有几个用二项式瞎几把推的玩意。

斐波那契类问题

把一个生成函数用它自己的形式表示。注意边角项。

你会拆出来一个式子,以斐波那契为例。

F(x)=x1xx2

你发现下面这个方程有两个根,根据牛逼定理,你大力猜这玩意可以裂项。

然后你就设

F(x)=a1x1+b1x2

然后手动解个方程。

之后你可以用这两个东西直接搞出通项公式。

如果模意义下缺点东西的话,可以扩域。

特征方程

如果你觉得上面那个方法太烦,可以试试特征方程。

它用来解决

fi=afi1+bfi2

一类的问题。

有更高维的形式,但是比较麻烦,不搞了。

你假装

f 是一个公比为 q 的等比数列。

然后你可以得到

q2=aq+b

你根据这个方程搞出 q1, q2

然后

fi=ϕ1q1i+ϕ2q2i

根据前两项的值解出 ϕ1ϕ2 就行了。

证明:

你觉得我会?

构造幂级数的小技巧

平移和拉伸。

常系数齐次线性递推

其实就是手动把一些项补齐吧。

分式分解

这是什么鸡儿玩意。

卡特兰数

有通项公式

cn=i=0n1cicni

把两边的生成函数写出来

[xn]C=[xn1]C2+[n=0]C=xC2+1C=1±14x2x

x=0 的时候,C=1 。如果上面取正号,会搞出非零数除以零,寄。

所以

C=114x2x

如何搞成更优美的形式,需要广义二项式定理。

生成函数组合计数初步+多项式工业练习

组合对象

指满足某一性质的可数的对象。

笛卡尔积

{(a1,a2,...,an)|a1A1,a2A2,...,anAn}A1,A2,...,An 的笛卡尔积。

其实就是每个集合选一个元素,组成的有序多元组的集合。

OGF

ordinary generating function.

两个 OGF 的乘法是经典的加法卷积。

0,1,12,13,...=ln(1x)

OGF 的加法代表不相交集合的并。
OGF 的乘法代表笛卡尔积

例题:

LG4451 整数的 lqp 拆分

CF438E The Child and Binary Tree

LG4389 付公主的背包

EGF

exponential generating function.

设有数列 fn ,其 EGF 为 F(x)=i=0fixii!

就是在第 i 项除了个 i!

1,1,1,1,...=ex

两个 EGF 的乘法是二项加法卷积

(FG)[k]=i+j=k(ki)F[i]G[j]

证明:

(FG)[k]k!=i+j=kF[i]i!G[j]j!

得证。

常用的 EGF:

1,c,c2,c3,...=ecx1,a,a2_,a3_,...=(1+x)a

(有标号对象的)笛卡尔积

将两个集合拼起来时,要用组合数分配标号。

例题:

LG5219 无聊的水题 I LG5339 [TJOI2019] 唱、跳、rap和篮球

exp 的组合意义

eF(x)=i=0F(x)ii!

这个的意义是多次卷积拼接自己。

例题:

LG4841 城市规划 LG5162 WD 与积木

PGF

probabilistic generating function.

对于离散随机变量 X ,约定 XN

其概率生成函数为

F(z)=i=0P(X=i)zi

显然有 F(1)=1

这玩意可以求导与期望产生联系

E(X)=i=0P(X=i)i=F(1)

进一步扩展

E(Xk_)=F(k)(1)

例题不会。

关于上面三种 GF 的例题:

51nod1514

fi 表示长度为 i 的合法排列个数。

容斥一下,不满足条件等价于在中间劈开,左边的数形成一个排列。

注意右边如果随便的话,就会算重。所以要保证左边加右边的前缀不是一个排列。

枚举左边的长度,得到

fn=n!i=1n1i!fni

移项

n!=i=1ni!fni

gi=i!,大力整一发 OGF

G=1+GFF=G1+G

然后没了。

CTS2019 珍珠
LG5850 calc加强版

先把这玩意搞成无序的。

容易看出,答案是

[xn]i=1k(1+ix)

按照套路,两边取 ln

上面这玩意就变成了

j=1(i=1kin)(1)j+1xjj

然后你大力 EGF 搞出自然数幂和,就可以推倒了 /se 。

LG5860 Counting Trees

那必然是在 prufer 序列上搞事了。

答案相当于

[x2]i=1n(1+xvi2)

在通常情况下,右边这玩意不好直接 ln

对于 vi2 的,那就瞎几把特判一下,搞出一个 F

对于 vi>2 的,那就瞎几把 ln,搞出一个 G

然后把 FG 卷起来就行了。

LOJ6503 Magic

把一种颜色分成 j 段,就会产生 aij 个相邻。这样会有 (ai1j1) 种方法。

所以一种颜色的 EGF 就是

Ai=n=1ai(ai1n1)xnn!

分治 NTT 把它们卷在一起。

那么硬点分成 k 段,其他随便的方案数就是 fk=[xk]Ai

恰好 k 个相邻要求分成 nk 段。

gi 表示恰好 i 段的方案数。

gi=j=i(ji)fj

二项式反演一下

fi=j=i(1)ji(ji)gj

然后无了。

LG6516 Quark and Graph

不出意外的话,这题会是模拟赛题。

到时候应该会有一个专门的题解。

CF923E Perpetual Subtraction

不会,有时间再补。

upd:nmd 这题被扔进模拟赛里了,不得不做。

写出式子之后就是一路爆推。

没意思。

关于二项式

拆开组合数

很 trivial ,不讲了

经典二项式定理

很 trivial,不讲了

加法递推公式

(nm)=(n1m)+(n1m1)

这玩意可以优化组合数递推式,可以裂项,用于凑出系数。

推论和技巧:

i=0n(r+ii)=(r+n+1n)i=0n(im)=(n+1m+1)

上面两个都可以用从左到右 merge 的方法证明。

例题:

重返现世

ARC061F

第一步转化没想到。但是后面的自己推出来了。

首先你要把它转化成一个序列对吧。

我这边的计数方法和其他人的有点不一样。

那么在这个数列里,A 会出现 n1 次,B 出现不超过 m1 次,C 出现不超过 k1 次。且最后一次出现的一定是 A

那么大力枚举序列的长度。再枚举 B 的出现次数。

Ans=len=n1n+m+k13n+m+kleni(len1n2)(lenn+1i)=lenn1n+m+k13n+m+klen(len1n2)i(lenn+1i)

像上面所说,此时的 i 有限制。im1len(n1)ik1

所以右边实际上是

i=len(n1)k+1m1(lenn+1i)

那么我们记

f(l,r,a)=i=lr(ai)

那么我们就想 f(l,r,a)f(l+1,r,a+1)

考虑做差

     f(l+1,r,a+1)f(l,r,a)=(i=l+1r(a+1i)(ai))(al)=(i=l+1r(ai1))(al)=(i=lr(ai))(al)(ar)=f(l,r,a)(al)(ar)

然后你就可以愉快地递推了。

范德蒙德卷积

(n+mk)=i=0k(ni)(mki)

组合意义挺显然的。

例题:
LG2791 幼儿园篮球题

感觉比较简单。写出最原始的式子之后就一路挺显然的。

有一个

(mi)(ij)=(mj)(mjij)

广义二项式系数,广义二项式定理

广义二项式系数

(αi)=αi_i!

其中 α 是实数。

广义二项式定理

(x+y)α=i=0(αi)xiyαi

一些衍生技巧
上指标反转

(rk)=(1)k(kr1k)

对于 (2nn) 型组合数:

先考虑把 (n12k) 写成一些组合数的乘积。

用加倍公式

xk_(x12)k_=x2k_22k

x=k=n ,再同时除以 n!2,可以得到

(n12n)=(2nn)22n

用上指标反转,得到

(12n)(4)n=(2nn)

这时可以搞出

i=0(2ii)xi=i=0(12i)(4x)i

逆用广义二项式定理,搞出上面这玩意的封闭形式是

(14x)12

下降幂和上升幂的二项式定理

限制 n 是自然数

(x+y)n_=i=0n(ni)xi_yni_(x+y)n¯=i=0n(ni)xi¯yni¯

跟普通幂的没啥区别。

差分与前缀和

一个数列的一阶前缀和相当于卷上了一个 11x

n 阶前缀和就是卷了个 1(1x)n

差分就是卷 (1x),然后平移。

例题:
LG4458 链上二次求和

这个例题跟这个知识点有啥关系啊喂。

把这玩意搞出一个前缀和 si

把前缀和 si 再搞个前缀和 ssi

ans=i=lrj=insjsji=i=lrssnssi1ssni

然后乱维护 sss 就可以了。就变成一个 ds 问题了。

牛顿级数

不会。

生成函数与杨辉三角

把杨辉三角写成二元 GF

gn,m=(nm)G(x,y)=i=0j=0(ij)xiyj=i=0xi(y+1)i=11xxy

在组合数特定方向求和的时候,可以用这玩意搞出 GF,然后直接从封闭形式搞出点好玩的东西。

其他特殊数

斯特林数

基本的东西不讲。

例题
CF932E Team Work

什么垃圾题。

LG4609 [FJOI2016] 建筑师

什么第一类 Stirling 数神仙题。

CF960G Bandit Blues

这 tm 不是跟上一题一样吗。

CF961G Partitions

第一眼:不会

第二眼:瞪出来一个式子,然后 NTT 同一列斯特林数就可以了哈哈哈

核心是化简这样一个东西

     i=1ni(n1i1){nik1}

然后你直接拆斯特林数,直接推就行了。

CF715E Complete the Permutations

不会。mark 一下,以后补。

伯努利数

不会。不想学。

欧拉数

不会。不想学。

分拆数

不会。不想学。

(你怎么啥也不想学 /fn)。

后面的学个锤子。我爬了。

posted @   ZSH_ZSH  阅读(149)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示