Hall 定理学习笔记

定义

对于一张二分图 G = ( V , E ) G=(V,E) G=(V,E),设其左右部点集分别为 V L , V R V_L,V_R VL,VR,不妨认为 ( ∣ V L ∣ ≤ ∣ V R ∣ ) (|V_L|\leq |V_R|) (VLVR),定义该二分图的一组 完备匹配 为左部 ∣ V L ∣ |V_L| VL 个点全部成为匹配点的匹配。

Hall 定理讲的是,定义 N ( v ) N(v) N(v) 为节点 v v v 的邻居集,如果对于任意 S ⊆ V L S\subseteq V_L SVL,均有 ∣ S ∣ ≤ ∣ ⋃ u ∈ S N ( u ) ∣ |S|\leq|\bigcup\limits_{u\in S} N(u)| SuSN(u),则该二分图存在一组完备匹配。

证明参考资料

一些推论

  1. 对于一张 k k k 正则二分图(每个点度数都为 k k k,且 k ≥ 1 k\geq1 k1),若 ∣ V L ∣ = ∣ V R ∣ |V_L|=|V_R| VL=VR,则必有 k k k 组边 不交 的完美匹配。

    证明:考虑归纳,只需证明该二分图存在一组完美匹配,那么删去这些匹配边后会得到 k − 1 k-1 k1 正则二分图,归纳即证。
    考虑 hall 定理,若存在 S ⊆ V L S\subseteq V_L SVL 使得 ∣ S ∣ > ∣ ⋃ u ∈ S N ( u ) ∣ |S|>|\bigcup\limits_{u\in S} N(u)| S>uSN(u),由于 ∣ ⋃ u ∈ S N ( u ) ∣ |\bigcup\limits_{u\in S} N(u)| uSN(u) 中的点的度数之和必定 ≥ \geq k ∣ S ∣ k|S| kS,但该点集的点数却小于 ∣ S ∣ |S| S,显然矛盾,因此 hall 条件成立,存在完美匹配。

  2. 左右两部分别为 V L , V R V_L,V_R VL,VR 的二分图最大匹配为 ∣ V L ∣ − max ⁡ S ⊆ V L ( ∣ S ∣ − ∣ ⋃ u ∈ S N ( u ) ∣ ) |V_L|-\max\limits_{S\subseteq V_L}(|S|-|\bigcup\limits_{u\in S} N(u)|) VLSVLmax(SuSN(u))
    很好理解。

应用

题目类型很多。

直接应用

数据范围比较小,可以 2 n 2^{n} 2n 枚举集合 check 是否满足 hall 条件

AT_arc106_e [ARC106E] Medals

枚举集合完之后问题转化成了:求多少天才能让并集大小为 K K K

试试二分,好像更好做了,但推式子还是推不出来答案。

然后观察一下发现答案是 2 n k 2nk 2nk 级别的,是可以直接扫一遍的。

剩下就很简单了。

数据结构维护 hall 条件

正常来说想使用 hall 来 求/判断 最大匹配需要枚举所有集合 S S S,复杂度不可接受

但在某些题目中合法(或者说有用)的 S S S 可能会满足某种性质(比如是一段区间),从而使得枚举量大大减少,可以用数据结构直接维护。

P3488 [POI 2009] LYZ-Ice Skates

直接应用,显然有用的人的集合一定是一段区间,推推式子就转化成了最大子段和。

CF338E Optimize!

有用集合是值域上一段前缀。

AT_arc076_d [ARC076F] Exhausted?

以人为左部点列 hall 条件,求它们的并;可以看成先选出一段并区间,再选出尽可能多的人,这样方便用数据结构维护。

求并可以转化成求补集交,扫描线补集右端点,维护所有左端点答案。

P9528 [JOISC 2022] 蚂蚁与方糖

如果不单单是判断,而是求最大匹配会有什么变化呢?

发现区别在于:现在可能选出 多段 连续区间。

形式化的描述一下简化后的问题:设蚂蚁前缀和为 S i S_i Si,方糖前缀和为 T i T_i Ti,你要选出若干段区间 { l 1 , r 1 , . . . l k , r k } \{l_1,r_1,...l_k,r_k\} {l1,r1,...lk,rk},最大化 ∑ i = 1 k T r i − L − T l i + L − 1 − ( S r i − S l i − 1 ) \sum\limits_{i=1}^k T_{r_i-L}-T_{l_i+L-1}-(S_{r_i}-S_{l_i-1}) i=1kTriLTli+L1(SriSli1) 最大。

化一下式子: ∑ i = 1 k ( T r i − L − S r i ) + ( S l i − 1 − T l i + L − 1 ) \sum\limits_{i=1}^k (T_{r_i-L}-S_{r_i})+(S_{l_i-1}-T_{l_i+L-1}) i=1k(TriLSri)+(Sli1Tli+L1)

P i = T i − L − S i P_i=T_{i-L}-S_i Pi=TiLSi Q i = S i − T i + L Q_i=S_i-T_{i+L} Qi=SiTi+L,那么就是每个点有权值 P , Q P,Q P,Q,要选出形如 Q P Q P . . . Q P QPQP...QP QPQP...QP 的若干个点,最大化选出点的权值和。

这个问题具有良好的可合并性,只需记录当前区间中开头结尾选法对应的最大值即可。

现在涉及到修改,由于我们是在前缀和意义下考虑所以修改是一段后缀,直觉上区间修改很难维护,可能只能分块+重构什么的,但还是应该多试试的,有些性质得在编做法的过程中才能发现。

考虑线段树维护上述答案,对于修改 ( t , x , v ) (t,x,v) (t,x,v)

  • 如果是修改蚂蚁 S S S,等价于 [ x , inf ⁡ ] [x,\inf] [x,inf] 区间中所有 P − v P-v Pv Q + v Q+v Q+v,显然我们只需要在当前线段树节点递归到 x ≤ l x\leq l xl 时快速更新答案即可,那么容易发现影响是 P . . P P..P P..P − v -v v Q . . . Q Q...Q Q...Q + v +v +v,其他不变,可以直接打 tag。
  • 如果修改方糖 T T T,就是让 [ x + L , inf ⁡ ] [x+L,\inf] [x+L,inf] P + v P+v P+v [ x − L , inf ⁡ ] [x-L,\inf] [xL,inf] Q − v Q-v Qv。还是考虑线段树递归的过程,递归边界有几种:
    • r < x − L r<x-L r<xL,没影响,直接 return
    • x + L ≤ l x+L\leq l x+Ll,和修改 S S S 类似,直接打 tag 即可。
    • x − L ≤ l , r < x + L x-L\leq l,r< x+L xLl,r<x+L,这比较困难,因为这样的区间的四种答案是受到所选 Q Q Q 数量的影响的,无脑想法是维护凸包什么的。但我们有性质!注意到这样的区间长度 ≤ x + L − 1 − ( x − L ) = 2 L − 1 \leq x+L-1-(x-L)=2L-1 x+L1(xL)=2L1,那么形如 Q . . . P Q...P Q...P 一个点都不会选, P . . . Q P...Q P...Q 最多选一组 P Q PQ PQ P . . . P P...P P...P 最多选成 P P P Q . . . Q Q...Q Q...Q 最多选成 Q Q Q,所有的 Q Q Q 数量都是固定的,可以直接打 tag 。

真好。

hall 定理辅助构造 / 猜结论

五花八门,具体题目具体应用。

AT_agc037_d [AGC037D] Sorting a Grid

好玩,喜欢。

发现本质上要为每个元素分配一列,然后过程是 起点 → \to 这一列,起点行 → \to 这一列,终点行 → \to 终点

限制是不能有俩起点 或者 终点在同一行的元素分配到了同一列。

继续把限制拆开看,先从每行选一个起点,要求起点对应终点所在行互不相同,这就很二分图匹配了。

左部是起点行,右部是终点行,连边就表示一种元素,每次选一组完美匹配出来分配到同一列上。

就是说我需要 m m m 组边不交的完美匹配,这还刚好是 m m m 正则二分图,对完啦!

再放个东西:边染色

AT_agc029_f [AGC029F] Construction of a tree

神秘题,不喜欢。

首先感受到可以用类似 hall 的条件判无解。

树上连边很难刻画;但考虑为每个点分配父亲,也就是分配父亲所在集合,这就是简单的匹配问题了。

这样最后节点会剩下一个,不妨认为它是根,然后从它开始 dfs 建树,可以证明遍历不了所有点的话就无解。

还有记住二分图匹配可以跑 1 0 5 10^5 105!!

P9070 [CTS2023] 琪露诺的符卡交换

逆天。

想想什么是好做的:我可以使得每一列恰好是 1 ∼ n 1\sim n 1n 的排列!

然后呢?我可以交换 ( i , j ) ( j , i ) (i,j)(j,i) (i,j)(j,i),把矩阵转置!

我靠,做完了!

逆用 hall 定理

顾名思义,有时候列出了 hall 条件的式子,就可以转化成限制二分图有完备匹配,某些题里后者比前者可做。

CF1519F Chests and Keys

列出来 B o b Bob Bob 收益 > 0 >0 >0 的式子发现就是 hall 条件,那么直接转化成存在完备匹配。

数据范围很小,无脑记状态 d p dp dp 就行。

不知道和 hall 有什么关系的题

反正他放到作业里了,我也不知道有啥关系。

CF103E Buying Sets

考虑怎么刻画 子集个数等于子集并 这个条件,由于求最小而且它保证了那个条件,于是可以转化成 inf ⁡ × ( 子集并 − 子集个数 ) \inf\times(子集并-子集个数) inf×(子集并子集个数),贡献拆开。

然后就是选一个子集就选它的所有元素的限制,这显然是个最大(小)权闭合图,网络流即可。

记住 D i n i c Dinic Dinic 复杂度可以写成 n 2 m n^2m n2m ,与边权无关的。

好像有神秘二分图匹配做法,不理解。

LibreOJ β Round #3 绯色 IOI(悬念)

干脆你叫 <填数游戏2> 算了,噢原来你比填数游戏早啊

一模一样的建图,一模一样的观察,一模一样的难写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/pingmian/86252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用jmeter进行websocket连接测试

一、WebSocket Sampler 插件安装 下载地址&#xff1a;http://download.csdn.net/detail/easternunbeaten/9753723 下载后&#xff0c;解压直接拷贝到Jmeter的lib下的ext文件夹里面,重启Jmeter&#xff0c;Sanpler下多一个Websocket选项 二、WebSocket 取样器字段介绍 1、W…

网络安全漏洞扫描是什么?如何识别目标进行扫描?

&#xff0c;现在大家对于网络安全漏洞扫描那可是相当在意这网络安全&#xff0c;如今在咱这个大时代里可是相当重要的一个事咧&#xff01;因为&#xff0c;随着互联网蹭蹭地发展&#xff0c;网络攻击还有数据泄露这类威胁那真是越来越多越来越大&#xff01; 咱先来说说啥叫…

NoSQL之Redis配置优化

NoSQL之Redis配置优化 一、Redis1.关系数据库与非关系型数据库关系型数据库非关系型数据库非关系型数据库产生背景 2.Redis基础Redis简介Redis安装部署配置参数 3.Redis命令工具redis-cli命令行工具redis-benchmark 测试工具 4.Redis数据库常用命令key相关命令(1)keys&#xff…

《HTTP权威指南》 第14章 安全HTTP

安全HTTP需要提供的功能&#xff1a; 服务器认证客户端认证完整性加密效率普适性管理的可扩展性适应性在社会上的可行性 HTTPS HTTPS方案的URL以https://开头&#xff0c;区别于https://。 HTTPS在HTTP的基础上使用SSL或者TLS&#xff08;传输层安全&#xff09;进行加密。 …

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导

Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导 在微服务和云原生时代&#xff0c;容器编排已成为保证应用可用性与扩展性的核心技术。本文将从问题背景出发&#xff0c;深入对比 Kubernetes、Docker Swarm 和 Nomad 三大主流编排方案&#xff0c;分析各自…

c++开源库项目框架汇总

Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL&#xff0c;测试网站在压力下工作的性能&#xff0c;最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁&#xff0c;源…

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL

【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置、高效微调与评估 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行&#xff1f;3. 准备工作&#xff08;回顾&#xff09;4. 核心&#xff1a;创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3…

3、NLP黄金九步法(问题定义-数据获取-数据探索)

&#x1f3af; 为什么要学习NLP流程&#xff1f; 想象一下&#xff0c;你要做一道菜&#x1f373;。如果没有清晰的步骤&#xff0c;随便把食材扔进锅里&#xff0c;结果会怎样&#xff1f;NLP项目也是如此&#xff01; 就像做菜有固定流程一样&#xff1a; 买菜 → 洗菜 → …

docker 安装DM8达梦数据库

搭建Docker 环境 查看docker 是否安装 yum list installed | grep docker如若未安装则安装docker 环境 yum -y install docker启动Docker systemctl start docker查看docker启动结果 systemctl status docker搭建达梦数据库 下载镜像 传送门 #导入镜像 docker load -i…

Chrome MCP Server:AI驱动浏览器自动化测试实战「喂饭教程」

Chrome MCP Server:AI驱动浏览器自动化测试实战 一、项目简介二、原理剖析1. 架构总览三、安装1. 环境准备2. 安装步骤2.1 下载 Chrome 扩展2.2 安装 mcp-chrome-bridge2.3 加载扩展2.4 启动 MCP Server2.5 配置 AI 客户端四、Chrome MCP Server API 参考五、用法实战1. 与 AI…

.NET多线程任务实现的几种方法及线程等待全面分析

文章目录 1. 引言2. .NET多线程编程基础2.1 线程概念回顾2.2 .NET线程模型概述 3. 多线程任务实现方法3.1 Thread类实现3.2 ThreadPool实现3.3 Task Parallel Library (TPL)3.4 Parallel类3.5 BackgroundWorker组件3.6 Async/Await模式3.7 各种方法的比较与选择 4. 线程等待机制…

Typecho handsome访客统计插件最新版VistorLoggerPro

文章目录 介绍功能特点页面预览安装及更新方法系统要求使用说明基本使用&#xff08;Handsome主题适用&#xff09; 隐私保护技术实现更新日志最后 介绍 这是一个为 Typecho 博客系统开发的访客统计插件&#xff0c;基于原版的VistorLogger修改版本。该插件提供了详细的访问统…

蓝桥杯备赛篇(上) - 参加蓝桥杯所需要的基础能力 1(C++)

目录 一、&#xff08;工具&#xff09;DevC的安装和使用1.1 DevC介绍1.2 下载1.3 部分使用技巧1.3.1 快捷键介绍1.3.2 调试快捷键 二、第一个C程序2.1 基础程序2.2 main函数2.3 字符串2.4 头文件2.5 cin和cout初识2.6 名字空间 三、注释四、题目练习3.1 输出第二个整数3.2 字符…

Bugku-CTF-web(适合初学者)

今天刷了一下 Bugku-CTF-web 的1-10题&#xff0c;比较简单&#xff0c;比较娱乐&#xff0c;基本上看看源代码就可以了&#xff0c;非常适合初学者。能够学习到base64编码&#xff0c;unicode编码&#xff0c;dirb web目录遍历&#xff0c;SourceLeakHacker 备份文件遍历&…

【实时Linux实战系列】基于实时Linux的音频处理应用开发

在实时系统中&#xff0c;音频处理应用&#xff08;如实时音频效果处理、语音通信等&#xff09;需要低延迟和高精度的时间控制。实时Linux通过优化内核调度和提供高效的I/O操作&#xff0c;能够满足音频处理对实时性的严格要求。掌握基于实时Linux的音频处理应用开发对于开发者…

Linux中信号的三种产生方式

在 Linux 中&#xff0c;信号&#xff08;Signal&#xff09;是一种进程间通信的机制&#xff0c;用于通知进程发生了某种事件。理解信号的来源对于开发可靠、健壮的程序至关重要。本文将介绍三种常见的信号产生方式&#xff0c;包括&#xff1a;kill 命令、键盘输入&#xff0…

Android15启动icon界面的背景图颜色

Android15启动icon界面的背景图颜色 在一加Ace 5启动时有个图标在中间的&#xff0c;它界面的背景图是灰色的&#xff0c;不好看&#xff0c;想改为白色。 解决方案&#xff1a; 在app下的AndroidManifest.xml文件的<application这个标签的android:theme增加&#xff1a;…

用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题

原因&#xff1a; 这个问题&#xff0c;其实是pdf自带了某个缩放比例&#xff0c;与窗口的比例不一致&#xff0c;因此会进行窗口缩放。 解决方法: 用acrobat&#xff08;我没有找到如何用福昕阅读器进行设置的方法&#xff09;&#xff0c;打开【文档属性】&#xff0c;然后打…

Windows环境Browser-Use平台部署与AI自动化远程访问实现过程

文章目录 前言1. 安装Ollama2. Gemma3模型安装与运行3. 虚拟环境准备3.1 安装Python3.2. 安装conda 4. 本地部署Brower Use WebUI4.1 创建一个新conda环境4.2 克隆存储库4.3 安装依赖环境4.4 安装浏览器自动化工具4.5 修改配置信息 5. 本地运行测试6. 安装内网穿透6.1 配置公网…

React + Umi(Umijs/Max) 搭建项目及配置

文章标题 01 环境准备02 快速构建2.1 参数选项2.2 umix 还是 umijs/max2.3 使用 pnpm &#xff08;推荐&#xff09;2.4 使用 npm 和 yarn2.5 启动项目2.6 启用 Prettier&#xff08;可选&#xff09;2.7 打包部署发布 03 Tailwind CSS 插件&#xff08;可选&#xff09;3.1 安…