Hall定理小结
Hall 定理小结
Hall 定理
对于二分图 $G=(V,E)$ ,令 $N(v)$ 表示与点 $v$ 相邻的点集,则关于最大匹配,我们有如下结论:
设二分图 $G$ 的两部分 $X,Y$,且 $|X|\le |Y|$ ,则 $|X|$ 存在完美匹配(存在一个大小为 $|X|$ 的匹配)当且仅当 $\forall S\subseteq X$,都有 $S\le |N(S)|$。
证明网上很多,这里不再赘述。
推论1
如果一个无向图的每个点度数都为 $k$,则成为其为 $k$ 正则图。
那么左右点数相等的 $k$ 正则二分图必有完美匹配。$k\ge 1$
证明:
若不然,考虑一个左部点集 $L$,则存在 $R=N(L),|R|<|L|$。考虑到 $|R|$ 的所有点的度数和不小于 $|L|\times k$ ,但是 $|R|<|L|$,这与每个点的度数都为 $k$ 矛盾。
推论2
Hall 定理可以用于点有权值的情况。左部点 $i$ 需要匹配 $a_i$ 个右部点,右部点 $i$ 需要匹配 $b_i$ 个左部点。匹配是可重复的。只需要将定理改写一下。其有完美匹配的充要条件为:
$$
\forall S\subseteq X,|\sum\limits_{x\in S}a_x|\le |\sum\limits_{y\in N(S)}b_y|
$$
证明可以将左部点 $i$ 拆成 $a_i$ 个点,右部点同样。发现此条件和原本的 Hall 定理是等价的。
CF1373F Network Coverage
题意:
$n$ 个城市,这 $n$个城市首尾相接形成一个环。每个城市需要 $a_i$ 个网络数量。$n$ 个网络基站,第 $i$ 个网络基站有 $b_i$ 的网络数量,可以给 $i$ 和 $i+1$ 提供 网络。(第 $n$ 个网络基站可以给第 $n$ 座城市和第 $1$ 座城市提供网络)。
判断能否使得所有的家庭都获得网络。
$n\le 10^6$
做法
显然是个带权二分图求完美匹配的题。
考虑枚举城市的集合 $L$,如果 $L$ 不是一个连续的区间,判断其是否合法,与其中每个连续的区间分别同时满足判定的条件是等价的。
转化为对于任意区间 $[l,r]$ ,$\sum\limits_{i=l}^r a_i\le \sum\limits_{i=l-1}^rb_i$ 都成立。
前缀和+后缀最大值即可。题目要求为环的情况,断环为链。
CODE
1 | int a[maxn],b[maxn],n,d[maxn],suf[maxn]; |
推论3
设二分图 $G$ 的两部分分别为 $X,Y$,则最大匹配为 $|X|-\max\limits_{S\subseteq X}(|S|-|N(S)|)$
证明不再赘述。主要是不会
ARC076F
题意
第 $i$ 个人可以与第 $[1,l_i]\bigcup[r_i,m]$ 的凳子相连。求最大匹配。
$n,m\le 2\times10^5$
解法
考虑按 $l_i$ 升序排序。 当前枚举到 $i$。必须去 $i$ ,则:
$$
|X|-\max_{S\subseteq}(|S|-|N(S)|)
=|X|-\max_{S\subseteq X}(|S|+m-\bigcup_{j\in S}(l_i,r_i)
$$
枚举并集,不妨枚举的区间为 $(l_i,k),k>l_i$
$$
n+m-\max_{S\subseteq X}{(\sum\limits_{j\le i}1[l_j\le l_i][k\le r_j]+k-l_i-1})
$$
用线段树维护 $r_j$ 即可。
1 | #include<bits/stdc++.h> |
CF338E
题意
$A$ 的长度为 $n$,$B$ 的长度为 $m$。
求 $A$ 有多少长度为 $m$ 的区间中的数和 $B$ 中的数完美匹配。
两个数匹配当且仅当其和不小于 $h$。 (区间必须连续)
$n,m\le 1.5\times 10^5$
解法
顺序与连边无关。考虑将 $B$ 先从大到小排序。那么对于 $a_i$ ,其向 $B$ 连边的节点一定为区间 $[1,l_i]$ 。这是容易计算的。
考虑 Hall 定理。枚举 $N(S)=[1,j]$,则有:
$$
\text{最大匹配}=|X|-\max_{S\subseteq X}(|S|-|N(S)|)=|X|-\max_{S\subseteq X}(\sum\limits 1[l_i\le j]-j)
$$
线段树维护 $l_i$ 即可。
1 |
|
可能的例题
- CF1373G
- CF1718D