连 ABC 的 F 都做不出来,连 Beginner 的比赛都 AK 不了,那么我就可以退役了吧。
Description
Solution
不难想到,我们需要将行与列之间匹配;若第 i i i 行和第 j j j 列匹配,就相当于选了 ( i , j ) (i,j) (i,j)。
但这样如何表示出题目给定的子矩阵呢?我们可以在中间加两列,每一行向第二列对应的位置连边,第三列向第四列对应的位置连边。
具体地说,令第 x x x 列的第 i i i 个位置为 P x , i P_{x,i} Px,i,那么按照如下方式连边:
- ∀ i \forall i ∀i,连边 ( S , P 1 , i , 1 ) (S,P_{1,i},1) (S,P1,i,1)
- ∀ i \forall i ∀i, ∀ j ∈ [ A i , B i ] \forall j \in [A_i,B_i] ∀j∈[Ai,Bi],连边 ( P 1 , j , P 2 , i , 1 ) (P_{1,j},P_{2,i},1) (P1,j,P2,i,1)
- ∀ i \forall i ∀i,连边 ( P 2 , i , P 3 , i , 1 ) (P_{2,i},P_{3,i},1) (P2,i,P3,i,1)
- ∀ i \forall i ∀i, ∀ j ∈ [ A j , B j ] \forall j \in [A_j,B_j] ∀j∈[Aj,Bj],连边 ( P 3 , i , P 4 , j , 1 ) (P_{3,i},P_{4,j},1) (P3,i,P4,j,1)
- ∀ i \forall i ∀i,连边 ( P 4 , i , T , 1 ) (P_{4,i},T,1) (P4,i,T,1)。
下面是一个例子(请忽略节点上的字母与数字,来源于 AT 的题解):
令
S
S
S 为源点,
T
T
T 为汇点,那么最大流即为答案。
Summary
技不如人,甘拜下风。