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 或者整体二分都行。
本文来自博客园,作者:CuteNess,转载请注明原文链接:https://www.cnblogs.com/CuteNess/p/18990694

浙公网安备 33010602011771号