成都集训图论篇

[NOI] 网格

题目描述

跳蚤国王和蛐蛐国王在玩一个游戏。

他们在一个 \(n\) 行$m $ 列的网格上排兵布阵。其中的 \(c\) 个格子中 ,每个格子有一只蛐蛐,其余的格子中,每个格子有一只跳蚤。

我们称占据的格子有公共边的两只跳蚤是相邻的。

我们称两只跳蚤是连通的,当且仅当这两只跳蚤相邻,或存在另一只跳蚤与这两只跳蚤都连通。

现在,蛐蛐国王希望,将某些(零个,一个或多个)跳蚤替换成蛐蛐,使得在此之后存在至少两只跳蚤不连通。

\(n,m \leqslant 10^9,c \leqslant 10^5\)

思路点拨

答案肯定在 \(0,1,2\) 之间,具体证明如下:

  • \(c=0\) ,这是最劣情况,我们可以堵住网格图的边角,花费两个蛐蛐。

  • 若网格图在删去包含蛐蛐的点之后存在割点,那么答案就是 \(1\) ,堵住割点即可。

  • 若一开始就存在两个点不连通,答案就是 \(0\)

题目就是想表达,给定一张网格图,删去了 \(c\) 个点,问是否存在割点,还要判断是否联通吧。

我们先考虑判断联通。我们发现,删去的点相比于 \(n\times m\) 这个规模实在是微不足道,也就是说,并不是每一个点都是有用的。我们发现,对于一个被删去的点,周围切比雪夫距离小于等于 \(2\) 的点才是我们真正需要考虑的,不然对于这个割点而言,它并不会产生任何贡献。我们可以在建好的图中判联通,如果不连通,答案就是 \(0\)

我们接下来就可以求出全部的割点,如果存在一个割点与某一个一开始就被删除的点切比雪夫距离小于等于 \(1\) ,那么答案就是 \(1\)。反之答案就是 \(2\)

Fiary

给定一张无向图,问对于每一条边,删去之后二分图。

\(n,m \leqslant 10^4\)

思路点拨

暴力时不可以过的,不要想了。

我们考虑,对于第 \(i\) 条边,我们可以认为这条边在时刻 \([1,i-1]\) 和时刻 \([i+1,m]\) 出现,问题就可以转化为,时刻 \(i\) 是否是二分图。对于这种问题,我们可以使用线段树分治解决。

posted @ 2023-07-30 17:23  Diavolo-Kuang  阅读(10)  评论(0编辑  收藏  举报