【bzoj1052】覆盖问题

【bzoj1052】覆盖问题

分析

考虑二分\(L\)的值,然后判断3个\(L*L\)能否覆盖所有的点。

这时候出现了两种可能的思路。

思路1

首先,3是一个很小的常数。

我们想:假如能探究出1和2的情况,那么3的情况是不是也可以类比或者转化为1和2的情况。

对于1的情况,很明显用一个最小的矩形,把所有点框起来,所能框得住即可。

对于2的情况,如图,我们先用一个最小的矩形框起来,使得所有点在内部。

由于所有点要被覆盖,所以点\(A\)和点\(B\)都一定要被覆盖,而且\(A,B\)所组成的矩形内没有其他的点。

那么有两种情况:

①在左上角使用一个矩形进行覆盖,另外的区域转化为1的情况

②对点\(A\)和点\(B\)分别用一个矩形覆盖

若①②中有一种能覆盖所有点,那么就成立了。

【bzoj1052】覆盖问题

接下来就可以考虑3的情况了。

同理左上角只可能有这两种情况。

所以枚举一下方案,同理递归处理好了。

思路2

我们现在有种想法:每次在左上角定点出作出一个\(L*L\)的矩形。

但是,有一种矛盾的地方:可能只在\(A\)和\(B\)上作。

但是,为什么一定是左上角呢?

与左上角性质相同的点还有3个:左下角,右上角,右下角。

每次的选择貌似一定是4个角其中一个做矩形的把。

假如4个角都不是,那么存在一些始终覆盖不掉。所以一定是。

上一篇:git 学习(2) ----- 分支


下一篇:洛谷 P2218 [HAOI2007]覆盖问题 解题报告