n
nn個人上工,第i
ii個人連續工作a
ia_i
ai天,休息a
ia_i
ai天
每天可以給乙個上工的人發獎章,求給每個人發k
kk個獎章需要的最少天數
大家看到這道題第一反應就去lcm了
結果這道題二分圖qwq
複製k
kk份工人,每個點與所有能上工的天匹配
如果有完美匹配,則這個天數合法
顯然這個天數可以二分
想到hall定理一句廢話
二分圖存在最大完備匹配的充要條件是某一側任意k
kk個點與另一側相連的點數≥
k\ge k
≥k對於每一天,預處理出它連向的人,發現n
nn很小,可以狀壓
二分有上界3nk
3nk3n
k 考慮如何使用hall定理
有乙個工人集合,共i
ii人,那麼若至少有k×i
k\times i
k×i天與之配對則合法
顯然這個並集不易求,考慮德 · 摩根定理轉化
求哪些天沒有這些工人,取交集,補集過去得到有工人的天數
採用桶求這個交集
預處理:[1,
mid]
[1,mid]
[1,mid
]天每天的工人集合子集天數都為1
求交集:列舉每個工人,列舉每個集合,直接相加
hall定理簡介
二分圖g
gg的兩個點集稱為x,y
x,yx,
y假設∣x∣
<∣y
∣|x|<|y|
∣x∣<∣y
∣,則一組完美匹配為x
xx的完全匹配
設∀ w∈
x\forall w\in x
∀w∈x
,y
yy中與w
ww有連邊的點集稱為f(w
)f(w)
f(w)
則一定有∣w∣
≤∣f(
w)
∣|w|\le |f(w)|
∣w∣≤∣f
(w)∣
這是乙個較弱的結論
但是hall定理的推論是乙個很強的結論
二分圖最大匹配數為∣x∣
−max∀
w∈
x|x|-\max_\
∣x∣−
max∀w∈
x
#include
using
namespace std;
#define in read()
int in
const
int n=19;
const
int k=
1e5+5;
const
int m=n*k*3;
int n,k,m,a[n]
;int work[m]
,one[
1<,cnt[
1<;bool
check
(int mid)
intmain()
printf
("%d\n"
,ans)
;return0;
}
Hall定理小記
hall定理 一張二分圖有完美匹配 即最大匹配為 min 當且僅當任意乙個點集 x 所有能直接到達的點集 y 所組成的匯出子圖有完美匹配 推論 一張二分圖的最大匹配為 min y 有 n 個班級 n leq 2 times 10 5 每個班級有 a i 名學生,該班共生產 b i 杯奶茶,每個學生只...
關於Hall定理的學習
hall 定理是二分圖匹配的相關定理 用於判斷二分圖是否存在完美匹配 存在完美匹配的二分圖即滿足最大匹配數為 min x y 的二分圖,也就是至少有一邊的點全部被匹配到了 設 m u 為與 u 中的點相連的點集,乙個二分圖 u,v u v 存在完美匹配,滿足對於任意點集 x u 都有 m x x 連...
bzoj3693 圓桌會議(Hall定理 線段樹)
題解 傳送門 要求任意子集均滿足,我們考慮對於每乙個區間 p,q 顯然只有q ri時這個區間才有詢問的意義,同時我們也有p lj 所有 l,r 在 p,q 之內的a的和s應滿足s q p 1即s p 1 q,否則一定不滿足hall定理。於是我們把所有的區間按r公升序排列,考慮列舉q,維護p lj時的...