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|) (VL?VR?),定義該二分圖的一組 完備匹配 為左部 ∣ V L ∣ |V_L| VL? 個點全部成為匹配點的匹配。

Hall 定理講的是,定義 N ( v ) N(v) N(v) 為節點 v v v 的鄰居集,如果對于任意 S ? V L S\subseteq V_L S?VL?,均有 ∣ S ∣ ≤ ∣ ? u ∈ S N ( u ) ∣ |S|\leq|\bigcup\limits_{u\in S} N(u)| SuS??N(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 k?1 正則二分圖,歸納即證。
    考慮 hall 定理,若存在 S ? V L S\subseteq V_L S?VL? 使得 ∣ S ∣ > ∣ ? u ∈ S N ( u ) ∣ |S|>|\bigcup\limits_{u\in S} N(u)| S>uS??N(u),由于 ∣ ? u ∈ S N ( u ) ∣ |\bigcup\limits_{u\in S} N(u)| uS??N(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)|) VL??S?VL?max?(S?uS??N(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=1k?Tri??L??Tli?+L?1??(Sri???Sli??1?) 最大。

化一下式子: ∑ 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?(Tri??L??Sri??)+(Sli??1??Tli?+L?1?)

P i = T i ? L ? S i P_i=T_{i-L}-S_i Pi?=Ti?L??Si? Q i = S i ? T i + L Q_i=S_i-T_{i+L} Qi?=Si??Ti+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 P?v 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] [x?L,inf] Q ? v Q-v Q?v。還是考慮線段樹遞歸的過程,遞歸邊界有幾種:
    • r < x ? L r<x-L r<x?L,沒影響,直接 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 x?Ll,r<x+L,這比較困難,因為這樣的區間的四種答案是受到所選 Q Q Q 數量的影響的,無腦想法是維護凸包什么的。但我們有性質!注意到這樣的區間長度 ≤ x + L ? 1 ? ( x ? L ) = 2 L ? 1 \leq x+L-1-(x-L)=2L-1 x+L?1?(x?L)=2L?1,那么形如 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.pswp.cn/pingmian/86252.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86252.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86252.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋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 安…