n\le 15
wzj33300
·
·
个人记录
状压图计数
### DAG 子图计数
找出子结构。
我们可以把 DAG 的第一层拆出来,也就是入度为 $0$ 的点。
设只考虑 $S$ 内的点的方案数为 $f_S$,子集容斥,考虑入度为 $0$ 的点的集合恰好为 $T$。
$$
\begin{aligned}
f_S&=\sum_{\emp\ne T\sube R\sube S}(-1)^{|R|-|T|}2^{\w(R,S\sm R)}f_{S\sm R}\\
&=\sum_{\emp\ne R\sube S}(-1)^{|R|}2^{\w(R,S\sm R)}f_{S\sm R}\sum_{\emp\neq T\sube R}(-1)^{|T|}\\
&=\sum_{\emp\ne R\sube S}(-1)^{|R|+1}2^{\w(R,S\sm R)}f_{S\sm R}
\end{aligned}
$$
### 强连通子图计数
别名主旋律。
$\text{强连通子图数}=\text{总子图数}-\text{非强连通子图数}$。
设 $f_S$ 为点集 $S$ 的答案,$g_S$ 为把点集 $S$ 缩点后为若干个单点的方案数,仍然是枚举 DAG 中入度为 $0$ 的点集,套用上面的结果,则有:
$$
f_S=2^{\w(S,S)}-\sum_{\emp\ne T\sube S}(-1)^{\text{T\;缩点后点数}+1}\,g_T\,2^{\w(T,S\sm T)+\w(S\sm T,S\sm T)}
$$
注意这里分出来第一层之后后面怎么样已经不用管了,还必须去掉 $T=S,T\;缩点后点数=1$ 的情况。
把容斥系数写到 $g$ 里面,即一个块为 $1$,每分一个乘上 $-1$ 的系数。
找一个代表元,强制 $T$ 包含它。
$$
\begin{aligned}
g_S&=f_S-\sum_{T\sub S,x\in T}f_T g_{S\sm T}\\
f_S&=2^{\w(S,S)}-\sum_{\emp\ne T\sube S}g_T\,2^{\w(T,S\sm T)+\w(S\sm T,S\sm T)}
\end{aligned}
$$
注意减去的是非连通子图,当 $T=S$ 时,$g_S$ 不能包含只分成一块的方案,正好解决了转移顺序的问题。
### 岁月
主要讲 C 性质,剩下的在 ex 里面。
题面就不写了,下面仍然是按照概率来计算。
考虑能到达所有点的点集恰好为 $P$,全集为 $U$,需要满足:
- $P$ 强连通:主旋律。
- $U-P$ 没有连向 $P$ 的边:直接计算。
- $P$ 能到达 $U-P$:
设 $f_S(S\supe P)$ 为 $P$ 能到达 $S$ 内的点的概率,$f_P=1$。
$$
f_S=1-\sum_{T\sub S,P\sube T}f_T\,2^{-\w(T,S\sm T)}
$$
三部分独立,可以直接乘起来。
考虑 $f_U$ 从哪里贡献过来:选定一个 $S\supe P$,考虑它上面的 $1$,经过一条 $S\to U$ 的路径,乘上系数 $2^{-\w(T,S\sm T)}$,贡献到 $f_U$。
所以可以倒过来转移,再做超集和。
:::info[ex]
最小生成树的结论,转成对于每种权值,都在把一些连通块合并起来。终点在连通块的根集中的边才有用。
所以 $\gdef\ww{cross'}\ww(S,T)=\w(\{u\mid\exist v\in S,u,v\,\text{在同一连通块中}\},T)
还是分成三部分:
- 强连通:只需要强制分出来的 T 必须是完整的,即一个连通块不能同时在 T 和 S\sm T 中。
- 没有反边:还是直接算。
- 可达所有点:在这里把每个连通块中的概率算上,同时也要强制 T 完整。
具体可以看代码,需要注意把 dp 倒过来转移时的初始值(即可能的终点)。
:::
重塑时光
会上面的东西之后就很简单了,建议降紫。
\xdef\noe#1#2{[\w(#1,#2)=0]}
首先去掉概率,总共的方案数为 (n+k)!。由于判定的条件只和这些选出来的非空集合有关,考虑最后有 s 个非空集合,则有方案数 \frac{1}{n!(n+1)^{\overline{k}}}\times k!\times s!\times\binom{k+1}{s},四个项的意义都比较清晰。
剩下的就是在一个 dag 上面划分 s 个集合,满足:每个集合之内都要是拓扑序排列;集合之间的边还是一个 dag。
直接套用主旋律的容斥。
设 f_{i,S} 表示分了 i 个集合,分走了 S 内的点的方案数,g_{i,S} 类似,h_S 处理集合内的拓扑序问题(计算直接枚举第一个点)。
\begin{aligned}
f_{i,S}&=\sum_{j+k=i}\sum_{\emp\ne T\sube S}g_{j,T}f_{k,S\sm T}\noe{T}{S\sm T}\\
g_{i,S}&=\sum_{x\in T\sube S}{\color{red}-}h_Tg_{i-1,S\sm T}\noe{T}{S\sm T}\noe{S\sm T}{T}\\
h_S&=\sum_{x\in S}h_{S\sm \{x\}}\noe{S\sm\{x\}}{\{x\}}
\end{aligned}
### 最小边双/点双/强连通生成子图
耳分解。以后再补。
**由于无向图的对称性,很多东西在无向图上都可以运用集合幂级数技术从 $3^n$ 优化到 $2^npoly(n)$。**
### 边双/点双计数
### Message Spread
## 集合幂级数
https://www.luogu.com.cn/article/46x8prtw
> 反演本身是一种容斥,通常把所求的东西的自由度扩大,但是却能将“恰好”、“一一对应”的这一类奇怪的限制给去掉,从而使得在计数角度方面的限制与状态缩小、化简。
#### 容斥原理
有一些元素和 $n$ 个限制,满足第 $i$ 个限制的元素集合为 $S_i$,则:
满足所有限制的集合大小:
$$
\left|\bigcap_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m+1}\sum_{T\sube[n],|T|=m}\left|\bigcup_{x\in T}S_x \right|
$$
满足任意一个限制的集合大小:
$$
\left|\bigcup_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m+1}\sum_{T\sube[n],|T|=m}\left|\bigcap_{x\in T}S_x \right|
$$
#### 子集/超集反演
设 $f(S)$ 为最终状态为 $S$ 的答案,$g(S)$ 为最终状态为 $S$ 的**子集**时的答案,即有:
$$
g(S)=\sum_{T\sube S}f(T)
$$
则我们有:
$$
f(S)=\sum_{T\sube S}(-1)^{|S|-|T|}g(T)
$$
设 $f(S)$ 为最终状态为 $S$ 的答案,$g(S)$ 为最终状态为 $S$ 的**超集**时的答案,即有:
$$
g(S)=\sum_{T\supe S}f(T)
$$
则我们有:
$$
f(S)=\sum_{T\supe S}(-1)^{|S|-|T|}g(T)
$$
证明都是简单的。
#### 二项式反演
也就是只关心集合的大小,所以一样有所谓的子集和超集,常用的是超集。
超集:
设 $f(x)$ 为**恰好**满足 $x$ 个限制的答案,$g(x)$ 为**钦定(至少)** 满足 $x$ 个限制的答案。
$$
g(x)=\sum_{x\le i}\binom{i}{x}f(i)
$$
一个方案会贡献 $\binom{|S|}{x}$ 次。
则我们有:
$$
f(x)=\sum_{x\le i}(-1)^{x-i}\binom{i}{x}g(i)
$$
子集:
略去。
形式非常简单,什么时候添加 $(-1)^{x-i}$ 只用看大小就好,上面的子集反演也一样。
是不是应该从 fwt 说起?
### NOI2025 集合
因为 $P\cap Q=\emp$,有 $val(P\cup Q)=val(P)val(Q)$。
定义 $N=\{0,1,\dots,n-1\}$,$U=\{0,1,\dots,2^n-1\}$。区分什么时候是全集。
$$
\begin{aligned}
Ans&=\sum_{P\sube U}\sum_{Q\sube U}[f(P)=f(Q)][P\cap Q=\emp]val(P)val(Q)\\
&=\sum_{S\sube N}\sum_{P\sube U}[f(P)=S]\sum_{Q\sube U}[f(Q)=S][P\cup Q=\emp]val(P)val(Q)\\
\end{aligned}
$$
$f$ 相当于钦定一些二进制位必须全选,剩下的至少要不选一个,这不好处理。考虑把至少不选一个容斥掉,也就是超集反演。
这里反演的时候要对 $P$ 和 $Q$ 分开反演两次(可以理解为先对 $P$ 反演,再对 $Q$ 反演,$Q$ 的时候全集会变),而不是一起做,不然 $g$ 没有实际意义,还是不好做。
$$
\begin{aligned}
Ans&=\sum_{S\sube N}\sum_{P\sube U}[f(P)=S]\sum_{Q\sube U}[f(Q)=S][P\cup Q=\emp]val(P)val(Q)\\
&=\sum_{S\sube N}\sum_{T_P\supe S}(-1)^{|S|-|T_P|}\sum_{T_Q\supe S}(-1)^{|S|-|T_Q|}\sum_{P\sube U}[f(P)\supe T_P]\sum_{Q\sube U}[f(Q)\supe T_Q][P\cup Q=\emp]val(P)val(Q)\\
&=\sum_{T_P\sube N, T_Q\sube N}(-1)^{|T_P|+|T_Q|} 2^{|T_P\cap T_Q|}\sum_{P\sube U}\sum_{Q\sube U}[f(P)\supe T_P][f(Q)\supe T_Q][P\cup Q=\emp]val(P)val(Q)
\end{aligned}
$$
对于一个元素 $x\in U$:
- 若 $x\supe T_P\cup T_Q$:在 $U,V$ 中都可以选;
- 否则,若 $x\supe T_P$:只在 $U$ 中可选;
- 否则,若 $x\supe T_Q$:只在 $V$ 中可选;
- 否则不可选。
先算中间两种情况,再把第一种情况除掉。
$$
\begin{aligned}
Ans&=\sum_{T_P\sube N, T_Q\sube N}(-1)^{|T_P|+|T_Q|} 2^{|T_P\cap T_Q|}\sum_{P\sube U}\sum_{Q\sube U}[f(P)\supe T_P][f(Q)\supe T_Q][P\cup Q=\emp]val(P)val(Q)\\
&=\sum_{T_P\sube N, T_Q\sube N}(-1)^{|T_P|+|T_Q|} 2^{|T_P\cap T_Q|}\left(\prod_{x\supe T_P}(a_x+1)\right)\left(\prod_{x\supe T_Q}(a_x+1)\right)\left(\prod_{x\supe T_P\cup T_Q}\frac{2a_x+1}{(a_x+1)^2}\right)
\end{aligned}
$$
又有交集又有并集,考虑去掉一个。
$$
\begin{aligned}
Ans&=\sum_{T_P\sube N, T_Q\sube N}(-2)^{|T_P|}(-2)^{|T_Q|} 2^{-|T_P\cup T_Q|}\left(\prod_{x\supe T_P}(a_x+1)\right)\left(\prod_{x\supe T_Q}(a_x+1)\right)\left(\prod_{x\supe T_P\cup T_Q}\frac{2a_x+1}{(a_x+1)^2}\right)\\
&=\sum_{T\sube N}2^{-|T|}\left(\prod_{x\supe T}\frac{2a_x+1}{(a_x+1)^2}\right)\sum_{T_P,T_Q}[T_P\cup T_Q=T]\left((-2)^{|T_P|}\left(\prod_{x\supe T_P}(a_x+1)\right)\right)\left((-2)^{|T_Q|}\left(\prod_{x\supe T_Q}(a_x+1)\right)\right)
\end{aligned}
$$
明显是一个 or 卷积,那么这题就做完了,怎么样很简单吧。
注意有一个除 $0$ 的问题,那由于最后 $0$ 的次数必定不小于 $0$,在加法的时候只保留最低次的即可。