「学习笔记」Hall定理
Descripition
设一张二分图两部点数为 ,则其的一个完备匹配定义为 左部 个点成为匹配点
特别地,当 时,这类匹配也被称为完备匹配
一个如上定义的二分图存在 完备匹配 的充要条件是对于左部点的大小为 的任意子集 ,这些点在右部连到的点集(也被称为 的邻域,记为 )大小不小于
Proof
首先证明必要性,如果一个点集的 不足 ,那么该集合并不能找到一个完备匹配,与定义相反
其次是充分性,考虑使用归纳的手段,这部分分两种情况:
-
如果存在一个严格子集 满足 ,则子集本身存在完备匹配
如果删去 后出现不满足条件的集合 ,那么在原二分图中取子集 ,必然有 ,与题设矛盾
那么由此证明如果存在 , 定理成立
-
如果所有子集的 均大于 ,那么找到一个点 并找到 ,删掉
不难发现此时剩下的二分图每个子集 都能满足 ,而且因为删掉了一个点,问题是原问题的子问题
根据归纳假设, 定理在此情况下也成立
例题
CF1519F
对于所有子集 ,均需满足下式:
那么把每个箱子和锁拆成 个点,每个箱子上每个点向每个锁的每个点连边
设箱子对应的点为左部点,若满足其有完美匹配,则上式成立
那么状压 可以很好的解决这个问题:设 表示考虑了前 个箱子后,右部点 每个锁剩下的点数为
这里 使用五进制表示,实现每次暴力编码解码即可
转移考虑枚举当前箱子拆出来的点匹配右边的哪种点,匹配几个,注意产生匹配就要付出代价,但是只用付出一次
用 实现转移是容易的
合法状态并不能让复杂度达到 的上界,但是朴素 过了??
ARC076F
本题需要 定理的一个推论:一个任意二分图 的最大匹配为
该推论可能可以通过增广路和匈牙利算法理解
问题即求解
发现对于一个特定的点集 ,其结果就是
使用数据结构维护扫描线容易完成
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律