hall定理相关
匹配:就是在图上找到端点不交的边集。
最大匹配:能够覆盖的点集最大。
完备匹配:能够覆盖某侧所有点。完备匹配一定是最大匹配,最大匹配不一定是完备匹配。
完美匹配:能够覆盖所有点。完美匹配一定是完备匹配,完备匹配不一定是完美匹配。
hall 定理
对于一个二分图 钦定 ,对于 ,定义 。
其存在 的完备匹配的充要条件为 。
简单的说,就是 的任意子集 向 连边,连到的所有点形成的集合 的大小大于等于 的大小。
考虑数学归纳法证明。
对 大小为 。假设任取大小为 的子集 ,满足 ,那么去除任意一对匹配后,剩下的点只要满足 hall 定理,就可以根据 说明 时满足 hall 定律。而这是显然的,因为较劣的情况是 的大小不变而 可连集合大小减一,这仍然满足 hall 定理。
假设存在大小为 的子集 ,满足 ,那么将这 对匹配去掉后,剩下的点也满足 hall 定理,和上面类似。
扩展1
二分图最大匹配大小为 当且仅当任意 满足 。数学归纳法证明和上面类似。
也就是说,一张二分图的最大匹配大小为 。
扩展2
要求每个点向右连 个匹配(?),当且仅当任意 满足 。把左边每个点拆成 个即可。
应用时总是需要建模技巧。
例题的难度大概是递减
例题hdu 5503
个队伍两两比赛,胜者加 分。给出最终的得分序列,问这样的得分序列是否可能存在。
每个队伍需要得 分,而每个比赛可以给两个队伍中一个加 分,先判断总数是否合法。
可以看作一张二分图,每个队伍向比赛连边,队伍最多连 条,比赛最多连两条,判断是否存在完美匹配。这就是上文中提到的扩展 2 的情况,我们将每个队伍拆成 个点后对比赛用 hall 定理,于是对于任意 个比赛,对应左边的 个队伍,则 ,只需把 排序选最小的 check。
其实有时会让人想到 2-set,2-set 需要把每个位置对另一个位置的可选状态都看作点,即使有优化建图的方法,过多的点数和边数仍是 2-set 的瓶颈。
组人在长为 的环上开会,每组有 个人需要安排到 上,问是否存在完备匹配。。
环上先考虑链。对每组用 hall 定理,考虑到区间不相邻的两组合并考虑对判断无影响,所以相当于只需考虑所有有交的区间并。再反向考虑(hall 定理仍然正向使用),只需对任意 ,满足所有被 完全包含的 的 。
由于 只会出现在 中,于是 只需枚举 并对 求 的最大值,再用 更新 即可。
对于环,拆环为链,但有一个不容易注意到的问题。就是当 时,它本来应该包含所有区间,但如果某个 满足 ,那么这个 和复制的 都没有计算成被包含。所以对于整个区间需要特判。
这个更适合入门?
所有 向 连边,判断完美匹配。发现把 排序后 连的是一段后缀,所以我们只需要判断 连了大于等于 条, 连了大于等于 条, 连了大于等于 条。
那么我们可以给 赋初值 ,然后每次区间加减并判断最小值的正负即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?