组合数学
Basic Formula
证明:
另一个证明同理
斯特林反演:
证明:
已知
另一个证明同理
应用:
第一类斯特林数求行(OGF形式)
已知
对应到第一类斯特林数就是
第一类斯特林数求列(EGF形式)
有且仅有一个圆排列的
第一类斯特林数是无标号的所以其对应的
于是倒着推也是可以推出答案式子的
注意ln之后常数项为 qpow的时候直接return exp(ln(f)*k),要提前去掉末尾
第二类斯特林数求行(OGF形式)
第二类斯特林数求列(EGF形式)
也可以用和第一类求列相类似的推导,注意 qpow时同第一类求列都要特殊处理
CF 932 E
HEOI2016 求和
(可优化到线性,见 200415 T3)
FJOI2016 建筑师
即一共组成
P4827 Crash 的文明世界
BZOJ3622 已经没有什么好害怕的了
对于
对于
剩下的随便配对即
上面的dp是错误的,其并不能算出至少
比如配对
应记录对于每个
注意到这个转移恰好不重不漏的计算了至少
P4002 生成树计数
构造
即得
$$
另解:
令 prufer序列前
考虑其组合意义即对于一个prufer序列我们在它后面再添上
注意到
然后 prufer序列的
prufer序列的
转移时考虑有没有染到后
注意初值是
然后分治ntt的写法可以不管什么看上去是
直接计算两边两个关于
即可(注意只用最后
(
P3711 仓鼠的数学题
翻转后卷积即可
CF 932 E严格加强
求
先把
如何转次幂为下降幂?
令
因为
2019 江苏省队集训D1T3 魔法咒语
已知
这个
下降幂多项式乘法
即直接把
两个下降幂的点值的
从点值
P4389 付公主的背包
直接调和级数一样做即可
下降幂转次幂
下降幂转点值的
再上个快速插值
快速插值
使用多点求值得到每个
然后每一项的常数项即为 return tr[lk]*solve(l,mid)+tr[rk]*solve(mid+1,r);
但这题可能会
注意到
WC2019 数树
首先有
type=0
直接求并大小
type=1
注意到有一个容斥式子
证明:
然后带入
其中
若
证明可以直接用行列式,这里写另一种
把每个已经确定的连通块看成一个点,然后直接用prufer序列,但是每一个连出去的边都有
prufer序列第 prufer序列里出现
若有
令
设
得到
转移是
现在已经可以
把
令
则
再令
即可 dp了
type=2
其中
所以带入得到
$$$$
对于一个确定点数为
的树,共有 种形式 把
个点分成 个有标号且大小分别为 的连通块的方案是
则把
令一种理解上式的方法:
一个大小为
的树的权值为 一个森林的权值为里面所有树的权值之积
求所有森林的权值之和
所以直接 exp 就行了
CodeChef PSUM
NTT卷积优化dp即可
BZOJ5093 图的价值
$$$$
算出第二类斯特林数后直接for一遍即可
分布
方差
伯努利分布
一个变量
则
二项式分布
二项分布是
注:以下记
由定义可得每次成功与否是独立的,可得
或者组合意义下证明
所以
同时类似的可以得到
UOJ269 如何优雅地求和
这道16年的题给了点值,现在看上去很明显,实际上应该要能自己想出来最重要的一步即转成下降幂
设
注意点值转下降幂的公式中,哪里要除以阶乘哪里乘阶乘要想清楚!
cf961G Partitions
$$
然后直接做即可,也可以用线性筛去掉快速幂的 0 base的)(实际上第一行的式子已经可以直接做了,只是模数比较恶心…)
或者从组合意义上考虑:
一个点被算进
自己对自己的贡献,这个的方案数是
加入了其他已经分成
份中的一份集合时同集合的点对其的贡献,考虑 个点分成 份的所有划分,每一种划分中当前点都可以加入划分出的 个集合的任意一个,加入的集合中的每一个别的点都对 有 的贡献,当前点一共有 种选取集合的方法,每个集合的点数加起来是
于是有
求第二类斯特林数的一项还是要更简单一些
HDU6042 Journey with Knapsack
因为我们最终需要
注意到题目中的特殊条件
所以
然后
可以得到
然后可以卷积这个的时候处理个前缀和直接线性
总复杂度
BZOJ4772 显而易见的数论
直接求所有分配方案下每个部分大小为定值的有多少个不好求,可以转换一下:
求一个至少有
搞错了!!!
上面两个式子都不成立!!!
正确的是
然后求
(注意那个
考虑两个互质的数的
令
然而在
复杂度经过Wolfram Mathematica 算出来是个
bzoj 讨论中出题人的写法是枚举