マジカル

· · 个人记录

Reference

1. 二项式反演

二项式定理

(a+b)^n=\sum\limits_{i=0}^n{n\choose i}a^ib^{n-i}

典中典

对于排列 a\forall a_i,a_i\ne i,求 a 的个数。

莎贝尔容斥

先随便填,但是其中有不满足要求的方案。

哪些方案不合法,\exists a_i,a_i=i

故减去钦定一个位置不合法,其他地方随便排的方案。

但是又会减重,例如有两个位置不合法就会被计算两次。

又要加上钦定两个位置不合法的情况。

这样就有 \mathcal O(2^n) 的做法了。

简单容斥

枚举子集太慢了,考虑组合数。

\sum\limits_{i=0}^n(-1)^i{n\choose i}(n-i)!

容斥的本质

\sum\limits_{i=0}^n(-1)^i{n\choose i}=(-1+1)^n=[n=0]

感性理解一下,上面那个题只有 n=0,即恰有 0 个人不合法的方案被统计,其他的都抵消了。

转一下形式

f(n)n 个数随便填的方案数,g(n)n 个数均不填在自己位置的方案数。

f(n)=\sum\limits_{i=0}^n{n\choose i}g(i)

以及我们上面的容斥式子

g(n)=\sum\limits_{i=0}^n(-1)^{n-i}{n\choose i}f(i)

怎么推导

\begin{aligned} g(n) &=\sum\limits_{m=0}^n[n-m=0]{n\choose m}g(m)\\ &=\sum\limits_{m=0}^n\left( \sum\limits_{i=0}^{n-m}(-1)^i{n-m\choose i} \right){n\choose m}g(m)\\ &=\sum\limits_{m=0}^n \sum\limits_{i=0}^{n-m}(-1)^i{n\choose i} {n-i\choose m}g(m)\\ &=\sum\limits_{i=0}^n(-1)^i{n\choose i}\sum\limits_{m=0}^{n-i}{n-i\choose m}g(m)\\ &=\sum\limits_{i=0}^n(-1)^i{n\choose i}f(n-i)\\ &=\sum\limits_{i=0}^n(-1)^{n-i}{n\choose i}f(i)\\ \end{aligned}

就得到了二项式反演的一种形式。

Another

上式中的 f(n) 可看作表示 “至多”,而当 f(n) 表示 “至少” 时也有类似结论。

f(n)=\sum\limits_{i=n}^m{i\choose n}g(i) g(n)=\sum\limits_{i=n}^m (-1)^{i-n}{i\choose n}f(i)

至此就可以把好算的至多至少,转为难算的恰好了。

注意这里定义的至少,表示的是钦定一组后统计方案再累加,会重复统计一种情况。

更好写的暴力递推

形式一

g_n=f_n-\sum\limits_{i=0}^{n-1}{n\choose i}g_i

形式二

g_n=f_n-\sum\limits_{i=n+1}^m{i\choose n}g_i

如果式子系数是简单的,可以直接套用这个反演方式。

f(i)={n\choose i}2^{2^{n-i}} g(k)=\sum\limits_{i=k}^n(-1)^{i-k}{i\choose k}{n\choose i}2^{2^{n-i}}

直接算即可。

dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\times(cnt_i-j+1) $cnt_i$ 表示比 $A_i$ 小的 $B_i$ 的个数,随便双指针求。 - ## [P5505 [JSOI2011]分特产](https://www.luogu.com.cn/problem/P5505) 每种特产是独立的,想要放到一起直接算很困难。 对于一种特产,不必分到每一个人,而最后要求每个人都能发到,考虑反演。 $g(i)$ 表示恰好有 $i$ 个人没分到,$f(i)$ 表示钦定了 $i$ 个人分不到的方案数。 对于一种特产隔板法算一下就好。 $$ f(i)={n\choose i}\prod\limits_{j=1}^m{a_j+n-i-1\choose n-i-1} $$ 最后答案 $$ g(0)=\sum\limits_{i=0}^n(-1)^{i-0}{i\choose0}f(i) $$ $$ g(0)=\sum\limits_{i=0}^n(-1)^{i}{n\choose i}\prod\limits_{j=1}^m{a_j+n-i-1\choose n-i-1} $$ - ## [CF1228E Another Filling the Grid](https://www.luogu.com.cn/problem/CF1228E) 只考虑行的限制是好做的,一行的方案数是 $k^n-(k-1)^n$。 接下来想满足列的限制,很难直接处理。 那就钦定 $i$ 列不合法 $$ f(i)={n\choose i}\left(k^{n-i}(k-1)^i-(k-1)^n\right)^n $$ 反演一下得出答案 $$ g(0)=\sum\limits_{i=0}^n(-1)^{i-0}{i\choose 0}f(i) $$ $$ g(0)=\sum\limits_{i=0}^n(-1)^i{n\choose i}\left(k^{n-i}(k-1)^i-(k-1)^n\right)^n $$ --- --- --- # 2. 莫比乌斯反演 ## 莫比乌斯函数 $$ x=\prod\limits_{i=1}^k p_i^{c_i},\,p_i\in\mathbb{P},c_i\ge1 $$ $$ \mu(x)= \begin{cases} 1 & x=1 \\ 0 & \exists i\in[1,k],\,c_i>1 \\ (-1)^k & \forall i\in[1,k],\,c_i=1 \\ \end{cases} $$ ## 有什么性质 $$ \sum\limits_{d\mid n}\mu(d)= \begin{cases} 1 & n=1 \\ 0 & n\ne1 \\ \end{cases} $$ 证明先设 $n=\prod\limits_{i=1}^kp_i^{c_i}$,$n'=\prod\limits_{i=1}^kp_i \sum\limits_{d\mid n}\mu(d) =\sum\limits_{d\mid n'}\mu(d) =\sum\limits_{i=0}^k{k\choose i}(-1)^i =[k=0]=[n=1]

所以还有

[\gcd(i,j)=1]=\sum\limits_{d\mid\gcd(i,j)} \mu(d)

与狄利克雷卷积

\varepsilon(n)=\sum\limits_{d\mid n}\mu(d),\,\mu\ast 1=\varepsilon

还可以推导得到

(\varphi\ast 1)(n)=n,\,\varphi(n)=\sum\limits_{d\mid n}d\times\mu\left(\frac{n}{d}\right)

有什么用?

反演

f(n)=\sum\limits_{d\mid n} g(n) g(n)=\sum\limits_{d\mid n}\mu(d)f\left(\frac{n}{d}\right)

证明

如法炮制

\begin{aligned} g(n) &=\sum\limits_{m\mid n}\left[\frac{n}{m}=1\right]g(m)\\ &=\sum\limits_{m\mid n}\sum_{d\mid\frac{n}{m}}\mu(d)g(m)\\ &=\sum\limits_{d\mid n}\mu(d)\sum_{m\mid\frac{n}{d}}g(m)\\ &=\sum\limits_{d\mid n}\mu(d)f\left(\frac{n}{d}\right)\\ \end{aligned}

Another

f(n)=\sum\limits_{n|d} g(d) g(n)=\sum\limits_{n|d}\mu\left(\frac{d}{n}\right)f(d)

莫比乌斯反演扩展

OI-wiki 没给题,也找不到,先随便记一下。

t$ 是完全积性函数,且 $t(1)=1 f(n)=\sum_{i=1}^n t(i)g\left(\left\lfloor\frac ni\right\rfloor\right) g(n)=\sum_{i=1}^n \mu(i)t(i)f\left(\left\lfloor\frac ni\right\rfloor\right) \begin{aligned} &=\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=k]\\ &=\sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor}[\gcd(i,j)=1]\\ &=\sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor}\sum\limits_{d\mid \gcd(i,j)}\mu(d)\\ &=\sum\limits_{d=1}\mu(d)\sum\limits_{i=1}^{\lfloor\frac{n}{k}\rfloor}[d\mid i]\sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor}[d\mid j]\\ &=\sum\limits_{d=1}\mu(d)\left\lfloor\frac{n}{kd}\right\rfloor\left\lfloor\frac{m}{kd}\right\rfloor\\ \end{aligned}

整除分块求一求。

3. Min-Max 容斥

不知道二级标题写什么

\max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\min(T) \min(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\max(T)

证明

a_k 为全集稳定排序后第 k 大,\min(S)=a_k

k=1 时,易得到 S={a_1}

k\ne1 时,\forall i\in[k+1,n],a_i\notin S[1,k-1] 可以随便选,通过人类智慧可得,2^{k-2} 种方案 |S| 是奇数,其余是偶数,因为贡献都是 a_k 乘个系数就消掉了。

所以只有当 \max(S)=\min(S) 的贡献才会统计进去。

期望相关

就用 E(\max(S))E(\min(T)),替换 \max(S)\min(T)

注意期望的 \max/\min 不能大力拆,即 E(\max(a,b))\ne \max(E(a),E(b))

扩展形式

\operatorname{kthmax}(S)=\sum_{T\subseteq S}(-1)^{|T|-k}{|T|-1\choose k-1}\min(T) \operatorname{kthmin}(S)=\sum_{T\subseteq S}(-1)^{|T|-k}{|T|-1\choose k-1}\max(T)

证明可以参照一般形式推广

另一形式

\operatorname{lcm}(S)= \prod_{T\subseteq S}\gcd(T)^{(-1)^{|T|-1}}

可以看做是对指数做的容斥。

4. 集合反演

找点普通的感觉

有数列 a_{1\sim2^n-1}b_{1\sim2^n-1},求数列 c 其中

c_r=\sum_{p,q}[p \operatorname{or} q=r]a_pb_q

这不是

把下标看成集合,那产生贡献的条件是 p\cup q=r,但并不好处理。

注意到 [p\cup q\subseteq s]=[p\subseteq s][q\subseteq s]

对于数列 a,定义 a' 满足 a'_s=\sum_{p\subseteq s}a_p

a' 就是一个高维前缀和。

\begin{aligned} c'_r &=\sum_{p,q}[p \cup q\subseteq r]a_pb_q\\ &=\sum_{p\subseteq r}a_p\sum_{q\subseteq r}b_q\\ &=a'_rb'_r \end{aligned}

已知 c'c,反演!

但其实很无脑,倒着减一遍就好了。

数学推导,找找性质。

\sum_{r\subseteq p}(-1)^{|r|}=[p=0]

本质是二项式反演。

\begin{aligned} g(p) &=\sum_{q\subseteq p}[p-q=0]g(q)\\ &=\sum_{q\subseteq p}\sum_{r\subseteq p-q}(-1)^{|r|}g(q)\\ &=\sum_{r\subseteq p}(-1)^{|r|}\sum_{q\subseteq p-r}g(q)\\ &=\sum_{r\subseteq p}(-1)^{|r|}f(p-r) \end{aligned}

最后就有这样的结论了

f(S)=\sum_{T\subseteq S}g(T) g(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|}f(T)

Another

c_r=\sum_{p,q}[p\operatorname{and}q=r]a_pb_q

可以取反后做 \operatorname{or}

做超集和变化,不难推出类似做法

也能得到如下结论

f(S)=\sum_{S\subseteq T}g(T) g(S)=\sum_{S\subseteq T}(-1)^{|T|-|S|}f(T)

多重子集反演

同上,集合变为可重集。

f(S)=\sum_{T\subseteq S} g(T)

定义 \mu(S),若 S 中存在相同元素时为 0,否则为 (-1)^{|s|}

可以得到 \sum\limits_{T\subseteq S}\mu(T)=[S=0]

g(S)=\sum_{T\subseteq S}\mu(S-T)f(T)

所以莫比乌斯反演相当于是在质因数分解上集合反演。

## 反演的幕后 观察一下,这个东西通过一个正变化,乘起来,再做一个逆变化,解决下标上运算奇怪的卷积。 其实就是 FWT 的核心思想。但是多项式不考。 ## 子集卷积 求 $c_r=\sum\limits_{p\subseteq r}a_pb_{r-p}$,$\mathcal O(n^22^n)

一个简单的想法是把 p\subseteq r 拆成 [p\cap q=0][p\cup q=r],然后再分别把式子展开

c_r=\sum_{v\subseteq r}(-1)^{|r|-|v|}\sum_{0\subseteq u\subseteq v}(-1)^{|u|-|0|}\sum_{p}[u\subseteq p\subseteq v]a_p\sum_{q}[u\subseteq q\subseteq v]b_q

但是还是不太好做,多记录一维 c_{i,r},表示 [|p|=i] 的和,这样就只有并集的条件了

\begin{aligned} c_{i,r} &=\sum_{p,q\subseteq r}[|p|=i][|q|=|r|-i][p\cup q=r]a_pb_q\\ &=\sum_{p,q\subseteq r}(-1)^{|r|-|v|}\sum_{p\subseteq r}[|p|=i]a_p\sum_{q\subseteq r}[|q|=|r|-i]b_q \end{aligned}

对于 c 构造出的变换就是对于每个 i 做一个子集前缀和。