专栏文章

CF1710E Two Arrays

CF1710E题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio3yfzp
此快照首次捕获于
2025/12/02 12:58
3 个月前
此快照最后确认于
2025/12/02 12:58
3 个月前
查看原文
首先二分答案 midmid,将 ai+bjmida_i + b_j \le mid 的看成是 00,否则是 11。那么 A 想最后留在 00,B 最后留在 11。每一步肯定是在 0101 间交替,可以建一个二分图,将它复制 10001000 次,使得每条边 (u,v)(u,v) 在任意两个复制的图之间都出现。
则这个问题等价于一开始在一个 11 的点,每次走到二分图的另一边,把上个点删掉,走不了的就输了。这是一个经典结论:
  • 二分图博弈,每次走到相邻的一个点并删除上个点,走不了的人输,先手获胜的充要条件是:二分图的所有最大匹配都包含起始点。
    • 充分性:由于起始点在所有最大匹配都出现,所以不存在一条从起始点的增广路,使得可以走匹配-非匹配边最后走到一个非匹配点(否则可以把起始点扔掉换成这个点),那么先手就一直走匹配边即可。
    • 必要性:假设存在一个不包含起始点的最大匹配,在先手走完第一步后后手可以一直沿着匹配边走,而先手不可能走到一个非匹配点(否则最大匹配 +1),所以先手肯定会输。
那么只需要求出这个二分图的最大匹配,删掉起始点再求一次看看是否相等即可,而复制了 kk 次的二分图 GkG^k 的最大匹配 Mk=kM|M^k|=k|M|,证明如下:
  • MkkM|M^k| \ge k|M|,只需要把最大匹配复制 kk 次即可
  • MkkM|M^k| \le k|M|,将最大匹配复制 kk 次后假设存在一条增广路,那么将这个增广路拿出来映射到原图上,显然对于一个 (u1,id1)(u2,id2)(u1,id1)(u_1,id_1) \to (u_2,id_2) \to \dots \to (u_1,id_1) 的环,将其删掉增广路依然合法,那么这条增广路就能完全映射到一个原图上了,得出矛盾。
所以只需求出原图最大匹配,可以将 a,ba,b 从大到小排序,11 的点是左上角的一个凸的轮廓线。考虑 hall 定理,即求出 maxS(SN(S))\max\limits_S (|S| - |N(S)|)。那么选出的 SS 中,一定不存在 (i,t),(j,t)(i,t),(j,t) 使得 i<ji<j(i,t)S,(j,t)S(i,t) \notin S, (j,t) \in S,这是因为 ii 行的 00 个数肯定小于等于 jj00 个数,换成它肯定不劣,列也同理。所以 SS 肯定是一个左上角的矩形(只有前缀的行列),那么枚举行数是 ii,再双指针处理一下列 jj,当且仅当 j+1j+1 列权值 >0>0 才加入,做个前缀和优化一下即可线性求出。
对于删掉起始点 (x,y)(x,y) 的最大匹配也类似,不过要将 (x,y)(x,y) 移到行中 11、列中 11 数量相同的行/列中最后一个就行。
复杂度 Θ(nlogV)\Theta(n\log V)

评论

0 条评论,欢迎与作者交流。

正在加载评论...