数学
斐波那契
二项式反演
定义 \(g(m)\) 表示恰好选 \(m\) 个时的方案数,\(f(m)\) 必定选\(m\) 个,其余不管的方案数。
由于 \(g\) 往往需要满足其余的数不选,所以会不是很好算,而 \(f\) 确是好算的,那么有以下公式:
那么求完 \(f\) 就可以 \(NTT\) 了。
例题
FWT
FWT 的思想就是将数列经过变换后,将位运算卷积变为逐位相乘,最终通过逆变换将其得到所求数列。单次 FWT 的时间复杂度为 \(O(2^nn)\) 可以将 \(O(3^n)\) 甚至更高的卷积优化。
或卷积
有 \(C_s=\sum_{s=t|z}A_t\times B_z\) ,\(FWT(F)_s=\sum_{t \subseteq s}F_t\)。
可以发现 \(FWT\) 的变换就是求每个集合的子集和,这个东西是容易用高维前缀和做到 \(O(2^nn)\)。下面将证明它的正确性:
发现两边意义相同,证毕。
由于其良好的性质,计算单值时可以做到 \(O(2^n)\) ,简单容斥即可。
与卷积
和或卷积几乎同理。
异或卷积
有 \(C_s=\sum_{s=t\oplus z}A_t\times B_z\) ,\(FWT(F)_s=\sum_{t\circ s=0}F_t-\sum_{t\circ s=1}F_t\)。
(定义\(s\circ t=popcount(s\&t)(mod\ 2)\))
变换本身是容易的,直接依次考虑 \(2^i\) 的贡献即可,证明如下:
注意到有 \((x\oplus y)\circ s=(x\circ s)\oplus (y\circ s)\),所以式子左右两边相等。
子集卷积
子集卷积一般使用或卷积实现,在或卷积的基础上,再加上位数的限制就行了。时间复杂度会多一个 \(n\)。
杂谈
乘法转化
将乘法转化成加和,可做卷积。
组合恒等式
Min-Max容斥
组合意义
有 \(n\) 个小球,\(a\) 个白球,\(b\) 个黑球,有若干种排列方式,现在记在所有排列方式中黑球的下标和为 \(d\)。问加入一个白球后,所有排列方式中黑球的下标和。
首先,有 \(n+1\) 中加的方式,所以继承下来,有 \((n+1)d\)
令黑球的位置集合为 \(P\) ,\(p_0=0,p_{b+1}=n+1\) ,考虑当前加入的白球后有多少个黑球贡献加一:
所以当前的答案是 \((n+2)d\) 。
若是加入黑球就在此基础上加上这个黑球的贡献。
匹配数
从 \(n\) 个数中选取 \(\frac n2\) 对数,方案有 \(w(n)=1\times 3\times 5\times...\times (n-1)\),当 \(n\) 为奇数时为 \(0\)。

浙公网安备 33010602011771号