マジカル
Reference
1. 二项式反演
二项式定理
典中典
对于排列
莎贝尔容斥
先随便填,但是其中有不满足要求的方案。
哪些方案不合法,
故减去钦定一个位置不合法,其他地方随便排的方案。
但是又会减重,例如有两个位置不合法就会被计算两次。
又要加上钦定两个位置不合法的情况。
这样就有
简单容斥
枚举子集太慢了,考虑组合数。
容斥的本质
感性理解一下,上面那个题只有
转一下形式
设
以及我们上面的容斥式子
怎么推导
就得到了二项式反演的一种形式。
Another
上式中的
至此就可以把好算的至多至少,转为难算的恰好了。
注意这里定义的至少,表示的是钦定一组后统计方案再累加,会重复统计一种情况。
更好写的暴力递推
形式一
形式二
如果式子系数是简单的,可以直接套用这个反演方式。
-
2839. 集合计数
$f(i)$ 很好算,钦定 $i$ 个元素之后,其他元素可选可不选,有 $2^{n-i}$ 个子集,再在其中选若干个,即 $2^{2^{n-i}}$ 中方案。 二项式反演一下就好了
直接算即可。
-
P4859 已经没有什么好害怕的了
原题保证
2n 个数两两不同。注意要求的是
A>B 比B>A 的个数多恰好k 个的方案数。所以实际上求的是
A>B 的个数恰好是\frac{n+k}{2} 一眼二项式反演,考虑求钦定
i 个的方案数。先将
A,B 都排个序。
所以还有
与狄利克雷卷积
还可以推导得到
有什么用?
反演
证明
如法炮制
Another
莫比乌斯反演扩展
OI-wiki 没给题,也找不到,先随便记一下。
-
P2522 [HAOI2011]Problem b
先差分,题意就变成求
\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=k] 开始操作
整除分块求一求。
-
P1829 [国家集训队]Crash的数字表格
先转
\gcd ,枚举\gcd 。\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j,\gcd(\frac id,\frac jd)=1} \frac{i\times j}{d} \sum_{d}d\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor}[\gcd(i,j)=1] \,i\times j 问题转化为求
F(n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=1] \,i\times j 莫比乌斯变化一下
\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d\mid \gcd(i,j)} \mu(d)\cdot i\cdot j \sum_{d}\mu(d)\cdot d^2\sum_{i=1}^{\lfloor\frac nd\rfloor}\sum_{j=1}^{\lfloor\frac md\rfloor} i\cdot j 前半部分前缀和,然后又转化求后半部分
G(n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m} i\cdot j=\frac{n(n+1)}{2}\times\frac{m(m+1)}{2} 带回去
F(n,m)=\sum_d\mu(d)\cdot d^2\cdot G\left(\left\lfloor\frac nd\right\rfloor,\left\lfloor\frac md\right\rfloor\right) 哇哇哇整除分块。
带回去
Ans=\sum_d d\cdot F\left(\left\lfloor\frac nd\right\rfloor,\left\lfloor\frac md\right\rfloor\right) 哇哇哇整除分块。
-
P3327 [SDOI2015]约数个数和
首先有性质
d(i\cdot j)=\sum\limits_{x\mid i}\sum\limits_{y\mid j}[\gcd(x,y)=1] 证明很高妙。考虑一个
k\mid (i\cdot j) 的一个因子p^c ,i 中有p^a ,j 中有p^b 。若
c\le a 那就在a 中选择c 个;若c>a 那就在b 中选择c-a 个。这样每个因子都可以对应到一种选择方案。
然后就可以开始推式子了
\begin{aligned} d(i\times j) &=\sum_{x\mid i}\sum_{y\mid j}[\gcd(x,y)=1]\\ &=\sum_{x\mid i}\sum_{y\mid j}\sum_{p\mid \gcd(x,y)}\mu(p)\\ &=\sum_{p\mid i,p\mid j}\mu(p)\sum_{x\mid i}\sum_{y\mid j}[p\mid \gcd(x,y)]\\ &=\sum_{p\mid i,p\mid j}\mu(p)\sum_{x\mid \frac ip}\sum_{y\mid \frac jp}1\\ &=\sum_{p\mid i,p\mid j}\mu(p)\cdot d\left(\frac ip\right)d\left(\frac jp\right)\\ \end{aligned} 带回到原式中
\begin{aligned} \sum_{i=1}^n\sum_{j=1}^md(i\times j) &=\sum_{i=1}^n\sum_{j=1}^m\sum_{p\mid i,p\mid j}\mu(p)\cdot d\left(\frac ip\right)d\left(\frac jp\right)\\ &=\sum_{p}\sum_{i=1}^n\sum_{j=1}^m[p\mid i][p\mid j]\cdot\mu(p)\cdot d\left(\frac ip\right)d\left(\frac jp\right)\\ &=\sum_{p}\sum_{i=1}^{\lfloor\frac np\rfloor}\sum_{j=1}^{\lfloor\frac mp\rfloor}\mu(p)\cdot d(i)\cdot d(j)\\ &=\sum_{p}\mu(p)\sum_{i=1}^{\lfloor\frac np\rfloor}d(i)\sum_{j=1}^{\lfloor\frac mp\rfloor}d(j) \end{aligned} 注意到这是前缀和,可以预处理。
哇哇哇整除分块
-
More More Tea Tea
3. Min-Max 容斥
不知道二级标题写什么
证明
设
当
当
所以只有当
期望相关
就用
注意期望的
扩展形式
证明可以参照一般形式推广
另一形式
可以看做是对指数做的容斥。
-
P3175 [HAOI2015]按位或
注意到 $P(\min(T)=k)=P(S\oplus T)^{k-1}\times(1-P(S\oplus T)) 由 $P(x=k)=p\times(1-p)$,可以得到 $E(x)=\frac 1p 所以就易得期望式子,问题就只需要处理一个子集前缀和就可以了。
-
P4707 重返现世
发现和上一题很像,但是变成了
kth 发现
|n-k|\le10 ,\min_k=\max_{n-k+1} 将
k 变为n-k+1 ,相当于要求\sum_{T\subseteq S}(-1)^{|T|-k}{|T|-1\choose k-1}\min(T) 。数据范围不支持直接来了,考虑 dp。
$f_{i,j}$ 表示考虑了前 $i$ 个物品,$\sum p=m$ 的答案。 组合数没法转移,考虑递推式 ${n\choose m}={n-1\choose m}+{n-1\choose m-1}$。 即 $k$ 需要进状态,再进行一个容斥系数的乘 $$ f_{k,i,j}=f_{k,i-1,j}+f_{k-1,i-1,j-p_i}-f_{k,i-1,j-p_i} $$ 长得像背包,同样可以用类似方法把 $i$ 那一维优化掉。 当由空集转移的时候特判一下即可。 - ## [P7360 「JZOI-1」红包](https://www.luogu.com.cn/problem/P7360) 直接对 min-max 容斥式子不是很容易做。 但是注意到 $f(n,k)=\prod\limits_{i_1=1}^n\prod\limits_{i_2=1}^n\cdots\prod\limits_{i_k=1}^n\gcd(i_1,i_2,\cdots,i_k)$ 是容易算的。 别把答辩放在指数上。 $$ f(n,k)=\prod_{D=1}^nD^{\sum_{d=1}^{\lfloor n/D\rfloor}\mu(d)\lfloor\frac n{Dd}\rfloor^k} =\prod_{D=1}^n\prod_{d=1}^{\lfloor\frac nD\rfloor}D^{\mu(d)\lfloor\frac n{Dd}\rfloor^k} $$ 考虑一个 $f(n,i)$ 对整个答案的贡献,除了钦定的 $i$ 个位置,其他位置随便填,都会在枚举子集的时候把这个计入答案。 $$ \prod_{i=1}^k f(n,i)^{(-1)^{i-1}\times{k\choose i}n^{k-i}} $$ 直接把 $f$ 带进去没有什么化简思路,但是注意到改变的值只有 $k f(n,k)=\left(\prod_{D=1}^n\prod_{d=1}^{\lfloor\frac nD\rfloor}D^{\mu(d)}\right)^{\lfloor\frac n{Dd}\rfloor^k} 指数很烦,再变一下
f(n,k)=\prod_{D=1}^n\left(\prod_{d\mid D}d^{\mu(\frac Dd)}\right)^{\lfloor\frac n{D}\rfloor^k} 带进去
\prod_{i=1}^k\left(\prod_{D=1}^n\left(\prod_{d\mid D}d^{\mu(\frac Dd)}\right)^{\lfloor\frac n{D}\rfloor^i}\right)^{(-1)^{i-1}{k\choose i}n^{k-i}} \prod_{D=1}^n\prod_{i=1}^k\left(\prod_{d\mid D}d^{\mu(\frac Dd)}\right)^{\lfloor\frac n{D}\rfloor^i(-1)^{i-1}{k\choose i}n^{k-i}} 现在就只要计算那坨指数加起来
\begin{aligned} &=\sum_{i=1}^k(-1)^{i-1}{k\choose i}n^{k-i}\times\left\lfloor\frac n{D}\right\rfloor^i\\ &=n^k-\sum_{i=0}^k(-1)^{i}{k\choose i}n^{k-i}\times\left\lfloor\frac n{D}\right\rfloor^i\\ &=n^k-\left(n-\left\lfloor\frac n{D}\right\rfloor\right)^k \end{aligned} 回带
ans=\prod_{D=1}^n\left(\prod_{d\mid D}d^{\mu(\frac Dd)}\right)^{n^k-\left(n-\left\lfloor\frac n{D}\right\rfloor\right)^k} 设
g(n)=\prod_{d\mid n}d^{\mu(\frac nd)} ,可以\mathcal O(n\log n) 预处理,也可以推推性质\mathcal O(n) 。整除分块算一算,
\mathcal O(T\sqrt n\log k) 。
4. 集合反演
找点普通的感觉
有数列
这不是
把下标看成集合,那产生贡献的条件是
注意到
对于数列
求
已知
但其实很无脑,倒着减一遍就好了。
数学推导,找找性质。
本质是二项式反演。
最后就有这样的结论了
Another
可以取反后做
做超集和变化,不难推出类似做法
也能得到如下结论
多重子集反演
同上,集合变为可重集。
定义
可以得到
所以莫比乌斯反演相当于是在质因数分解上集合反演。
一个简单的想法是把
但是还是不太好做,多记录一维
对于
-
P3349 [ZJOI2016]小星星
设
f(S) 表示至多用S 中的颜色覆盖的方案数,g(S) 表示恰好用S 中的颜色覆盖的方案数。考虑一个树形 dp,
f_{x,i} 表示以x 为根的子树,x 颜色为i 的方案数,转移枚举儿子填什么颜色。反演一下求答案,
\mathcal O(n^32^n) 。
-
UOJ37 【清华集训2014】主旋律
正难则反,首先考虑转为求删边后缩点为 DAG 的方案数。
先做子问题,给一张图求删边后是 DAG 的方案数。
一个 DAG 一定存在入度为
0 的点,考虑设z(T) 表示T 恰好是入度为0 点集的方案数,d(T) 表示钦定T 是入度为0 点集的方案数。设
f(S) 是点集为S 的答案,c(S,T) 表示S 向T 边的个数。易知
d(T)=2^{c(T,S-T)}f(S-T) ,又有f(S)=\sum_{T\subseteq S,T\ne\varnothing}z(T) ,简单集合反演得到\begin{aligned} f(S) &=\sum_{T\subseteq S,T\ne\varnothing}\sum_{T\subseteq R\subseteq S}(-1)^{|R|-|T|}d(R)\\ &=\sum_{R\subseteq S,R\ne\varnothing}(-1)^{|R|}d(R)\sum_{T\subseteq R,T\ne\varnothing}(-1)^{|T|}\\ &=\sum_{R\subseteq S,R\ne\varnothing}(-1)^{|R|}d(R)([R=\varnothing]-1)\\ &=\sum_{R\subseteq S,R\ne\varnothing}(-1)^{|R|+1}2^{c(R,S-R)}f(S-R) \end{aligned} 回到原问题,外面要套一个枚举缩点方案,复杂度爆炸。
考虑在推出来的式子中把缩的点拆开,我们只需要计算
R 的缩点方案数,式子可以写成f(S)=\sum_{R\subseteq S,R\ne\varnothing}\sum_{k=1}^{|R|}(-1)^{k+1}g_k(R)\times2^{c(R,S-R)}\times2^{c(S-R,S-R)} 对于 $k$ 的奇偶分开考虑,定义 $p(S)=\sum\limits_{k=1}^{\lfloor|T|+1/2\rfloor}g_{2k-1}(S)-\sum\limits_{k=1}^{\lfloor|T|/2\rfloor}g_{2k}(S)$。 再定义一个 $dp(S)$ 表示 $S$ 构成一个 SCC 的方案数,即答案。 $$ p(S)=dp(S)-\sum_{T\subseteq S,T\ne\varnothing}dp(T)\times p(S-T) $$ 但是直接求是错的,发现会算重,那就需要钦定一位必选,这样转移上来就是对的。 再扔回去 $$ f(S)=\sum_{T\subseteq S,T\ne\varnothing}p(T)\times 2^{c(R,S-R)+c(S-R,S-R)} $$ $$ dp(S)=2^{c(S,S)}-f(S) $$ 可以递推了