AT_arc076_d [ARC076F] Exhausted? 题解 / Hall 定理学习笔记

· · 题解

:::::info[题目基本信息] 考察:图论,线段树,扫描线(2819)。
题目简介:
给定一个二分图 G,有 n 个左部点和 m 个右部点,第 i 个右部点的权值为 i,同时给定序列 \{l_n\},\{r_n\},表示第 i 个左部点会和权值 x 满足 x\le l_i\lor x\ge r_i 的右部点连一条边,现在你可以增加一些右部点并任意钦定他们的权值使得该二分图的最大匹配为 n,问最少添加几个右部点。
数据范围:

证毕。
Hall 定理还有一条推论:
:::::success[Hall 定理推论]{open}
(引用 Hall 定理内的定义)
$$\nu(G)=
:::::
:::::success[证明]
还是开拆成不等式。
- $\displaystyle\nu(G)\le
对于一子集 V\subseteq V_1 且 $
- $\displaystyle\nu(G)\ge
考虑构造一个新图 G'=(V_1,V_2',E'),其中:
- V_2'=V_2\cup D,其中 D 满足:$
- $E'=E\cup{(u,v)

对于一子集 V\subseteq V_1,它在 G 上的邻居点集 N_{G'}(V)=N_G(V)\cup D,那么:

|N_{G'}(V)|=|N_G(V)\cup D|=|N_G(V)|+\max_{V\subseteq V_1}(|V|-|N_G(V)|)

注意到 |V|\le|N_G(V)|+\displaystyle\max_{V\subseteq V_1}(|V|-|N_G(V)|)=|N_{G'}(V)|,那么由 Hall 定理可知,\nu(G')=|V_1|。
现在将这 \displaystyle\max_{V\subseteq V_1}(|V|-|N_G(V)|) 个点逐一删去,容易发现每次最大匹配最多减少 1,那么我们就得到:

\nu(G)\ge|V_1|-\max_{V\subseteq V_1}(|V|-|N_G(V)|)

大于等于号得证。

原命题得证。
将引理代入得到本题答案为 $\displaystyle\max_{V\subseteq V_1}(
但是区间的并(还是两段)并不好做,所以我们考虑容斥成区间的交,容易得到 \displaystyle\bigcup_{u\in V}[1,l_u]\cup[r_u,m]=m-\bigcap_{u\in V}(l_u,r_u)。
现在考虑枚举交集,但是你好像忘了什么……
- 交集为空集:
这时需要满足条件 \displaystyle\max_{i=1}^nl_i\ge\min_{i=1}^nr_i,最终答案就是 $
- 交集非空:
设交集的开左端点为 L,开右端点为 R,那么开左端点为 L 的答案就是 \displaystyle\max_{R=L+1}^m((\sum_{i=1}^n[l_i\le L\land r_i\ge R])+R-L-1-m)。
这个可以先对 (l_i,r_i) 按第一关键字为 l_i 升序,第二关键字为 r_i 降序的顺序排序,然后就可以上扫描线加线段树做这题了。

然后就做完了。
时间复杂度为 \Theta(n\log n+n\log m+m),空间复杂度为 \Theta(n+m)。

code