P7274 草地

给定一 \(n \times m\)\(1 \leq n,m \leq 10^3\))的网格,其中每个格子均有颜色,可以为黑色或白色。

现可以进行若干次操作。一次操作中,你需选定上、下、左和右中的一个方向,然后,对于每个黑色的格子,若其指定方向上对应的位置不为网格的边界,则对应的那个格子变为黑色。

求:至少进行几次操作,才能使任意两个黑色格子八连通。八连通的定义可参考【提示/说明】部分。


偷个样例和两张图:

5 4
1100
1000
0011
0000
0001


考虑上下,左右没有本质区别,因此只考虑右和下。

两种操作间的顺序也没有影响,因此可以看作先往右 \(A\) 次,再往下 \(B\) 次。

那么两个点能够联通当且仅当 \(|x1-x2|\le A\), \(|y1-y2| \le B\)

那么就可以转化为跑 \(\max A + \max B\) 的最小生成树。

那么直接 LCT 或者整体二分都行。

posted @ 2025-07-18 02:22  CuteNess  阅读(6)  评论(0)    收藏  举报