「学习笔记」Hall定理
Descripition
设一张二分图两部点数为 \((x,y),x<y\),则其的一个完备匹配定义为 左部 \(x\) 个点成为匹配点
特别地,当 \(x=y\) 时,这类匹配也被称为完备匹配
一个如上定义的二分图存在 完备匹配 的充要条件是对于左部点的大小为 \(k\) 的任意子集 \(S\),这些点在右部连到的点集(也被称为 \(S\) 的邻域,记为 \(N(S)\))大小不小于 \(k\)
Proof
首先证明必要性,如果一个点集的 \(N(S)\) 不足 \(|S|\),那么该集合并不能找到一个完备匹配,与定义相反
其次是充分性,考虑使用归纳的手段,这部分分两种情况:
-
如果存在一个严格子集 \(S\) 满足 \(S=N(S)\),则子集本身存在完备匹配
如果删去 \(S,N(S)\) 后出现不满足条件的集合 \(T\),那么在原二分图中取子集 \(S\cup T\),必然有 \(|N(S\cup T)|<|S\cup T|\),与题设矛盾
那么由此证明如果存在 \(|S|=|N(S)|\),\(\rm{Hall}\) 定理成立
-
如果所有子集的 \(|N(S)|\) 均大于 \(|S|\),那么找到一个点 \(u\) 并找到 \((u,v)\in E\),删掉 \(u,v\in V,(u,* ), (* ,v)\in E\)
不难发现此时剩下的二分图每个子集 \(S\) 都能满足 \(|N(S)|\ge |S|\),而且因为删掉了一个点,问题是原问题的子问题
根据归纳假设,\(\rm{Hall}\) 定理在此情况下也成立
例题
CF1519F
对于所有子集 \(S\),均需满足下式:
那么把每个箱子和锁拆成 \(a_i,b_i\) 个点,每个箱子上每个点向每个锁的每个点连边
设箱子对应的点为左部点,若满足其有完美匹配,则上式成立
那么状压 \(DP\) 可以很好的解决这个问题:设 \(\rm{dp(i,S)}\) 表示考虑了前 \(i\) 个箱子后,右部点 每个锁剩下的点数为 \(S\)
这里 \(S\) 使用五进制表示,实现每次暴力编码解码即可
转移考虑枚举当前箱子拆出来的点匹配右边的哪种点,匹配几个,注意产生匹配就要付出代价,但是只用付出一次
用 \(\rm{dfs}\) 实现转移是容易的
合法状态并不能让复杂度达到 \(\Theta(n\times 5^{2n})\) 的上界,但是朴素 \(\rm{dfs}\) 过了??
ARC076F
本题需要 \(\rm{Hall}\) 定理的一个推论:一个任意二分图 \((V,E)\) 的最大匹配为 \(|V|-\max\limits_{S\in V}\{|S|-|N(S)|\}\)
该推论可能可以通过增广路和匈牙利算法理解
问题即求解 \(\max\limits_{S\in V}\{|S|-N(S)\}\)
发现对于一个特定的点集 \(x\),其结果就是 \(|S|-\max\limits_{i\in S} L_i-(m+1-\min\limits_{i\in S} R_i)\)
使用数据结构维护扫描线容易完成

浙公网安备 33010602011771号