考虑怎样才会不合法。利用霍尔定理,合法的充要条件是任意大小为 k 的 B 集合的邻域大小都不能小于 k。这里可以先考虑一些极端情况:对于 A 最大的 x,若不存在一个 A_i>B_x,则 x 无法收到礼物,一定不合法。也即,若我们把 [B_i,A_i] 看作一条线段,则需要保证最大的那一条线段与其它线段有交。
考虑扩展这一结论:有合法解的条件是任意线段都与其它线段有交。这里的必要性比较容易证明:假设线段 [A_i,B_i] 与其它线段无交,则拿出坐标小于等于这个线段的所有线段(含其本身)的集合 S,考虑任意 x\in S 对应的 B 处点集的邻域,由于自己不和自己连边,显然有邻域大小为 |S|<|S|+1,故一定不存在完美匹配。
接下来考虑这个结论的充分性:对于任意一个 B 集合,取出 B_x 最小的那一个 x,则 B_x 一定向集合内的其它元素的 A 部有连边,则邻域大小至少为 |B|-1。又因为一定存在线段与 [B_x,A_x] 相交,不妨假设 [B_y,A_y] 与其相交,讨论相交情况:
若 B_y\leq B_x,则 y 一定不在当前 B 集合内。由于相交一定有 A_y\geq B_x,即 B_x 一定与 A_y 相连,可给邻域额外贡献 1,合法。