CF1181E2 A Story of One Country (Hard)
考虑朴素作法。我们发现,我们对于一个位置 \((x_1,y_1,x_2,y_2)\),如果我们找到一条垂直/平行于 \(x\) 的直线能够分开所有矩形成为两个部分,且这两个部分各自也可以合并成一个,那么是合法的,且为充要条件。这是因为两个部分之间都是互不影响的,且因为它们只会在最后合并才会互相影响,那么可以认为它们如果无法合并那么在另一个方向进行合并也是不行的。所以我们找到了一个 \(O(n^2\log n)\) 的做法。
我们发现瓶颈在于如果我们需要排序然后扫的话就太慢了,因为这条线会在很后面。我们可以使用中途相遇法优化。我们考虑维护四个线,中间用 set/链表维护每个方向上先后遇到的矩形。然后每一次四条线往中间扫,这样就可以最多在 \(x=\frac{n}{2}\) 的位置扫出来。复杂度 \(T(n)=T(x)+T(n-x)+O(x\log n)=O(n\log^2n)\)。

浙公网安备 33010602011771号