CF1446E Long Recovery(附证明)

一个长这样的网格图(坐标范围\((Z,Z)\)):

一开始有些点是黑点,有些点是白点。

每次网格图会产生如下变化:选择恰好一个能改变颜色的格子将其改变,条件为:这个格子存在两个反色的相邻格子。

直到不能变化为止。

问最坏情况下,是否能全部染白,如果能变化次数最多是多少。

给出若干个初始黑点的坐标,初始黑点坐标范围为\((0\dots 499,0\dots 499)\)。初始黑点点数最多为\(500^2\)


有一说一这题不给个能卡掉明显错误贪心的样例,差评。

但题目确实难想,翻译着题解的证明尝试去理解。

首先想如何判断是否能全部染白。这里可以贪心:先将所有的操作都用于染黑,全部染黑之后再染白(显然这个情况下不会存在再染黑的情况)。如果最后全白了,说明可以。

但是如果这个做法套用到最长操作次数上,它就错了。原因在于在尽量染黑的过程中,可能出现染白后再染黑的情况。

搬下dyp博客的图:

最优可行解可以自己玩玩。

系统地定义答案的上限。定义\(\phi\)为相邻的不同颜色的格子的个数。可以发现每次操作过后\(\phi\)只会变成\(\phi-1\)\(\phi-3\)。分别称其为好操作和坏操作。正确的做法应该最小化坏操作的次数。

定义\(\overline A\)为黑点点集\(A\)在经过尽量染黑的操作之后形成的点集。

先尽量染黑,对于其中的每个连通块,假设它是\(\overline A\)。那么处理完\(A\)的时候,最后一个点必须要用坏操作;而在中间处理的时候能够一直用好操作,除非:\(A\)是个triforce(题解发明的一个词,字典中似乎没有它的实际含义,也不知如何翻译……)。

(下面会给出证明)

triforce长这样:

就是\(|A|=3\),且\(A\)中的三个黑格子都是同一个白格子的邻居。

所以做法就是:先计算一开始的\(\phi\),减去二倍连通块个数,减去二倍triforce的个数。

证明:如果没有triforce,那么不需要多余的坏操作。

以下证明是搬官网题解加上自己的一点点润色。

假设\(A\)是一个有至少两个格子的集合,满足:

  1. \(\overline A\)无环。
  2. \(\overline A\)联通。
  3. \(A\)不是triforce。

可以证明这里存在一个好操作,使得操作后的集合\(A'\)仍然满足这三个性质。显然性质1一直成立(因为\(\overline {A'}\subseteq \overline A\)),接下来证明后面两个性质。分类讨论:

  1. 存在一个白变黑的好操作。显然成立,做下去。

  2. 不存一个白变黑的好操作,但存在一个黑变白的好操作。假设\(c\)变白,因为不存在白变黑的好操作,所以\(\overline A \setminus A\)中每个格子在\(A\)有三个邻居。至少两个在\(A \setminus c\),于是\(\overline A \setminus A \subseteq \overline {A \setminus c}\)。即\(\overline A \setminus c \setminus (A \setminus c) \subseteq \overline {A \setminus c}\),因为\(A \setminus c \subseteq \overline {A \setminus c}\),所以\(\overline A \setminus c \subseteq \overline {A \setminus c}\)

    可以证明\(\overline {A \setminus c}\)联通:(1)\(c\)\(\overline A\)的一个叶子,显然去掉后仍然联通;(2)\(c\)不是\(\overline A\)的叶子,那么\(c\)至少有两个邻居,在集合\(\overline A \setminus c\)内,也在\(\overline {A \setminus c}\)内,于是\(c\)也在\(\overline {A \setminus c}\)内,得出\(\overline {A \setminus c}=\overline A\)

    如果是个\(A \setminus c\)是个triforce,那么\(A\)一定是个triforce加一个相邻的格子,这个情况下存在另一个\(c\),选了它仍然满足。那么一开始就选另一个\(c\)就好了。

  3. 如果不存在好操作,那么:\(A\)中的格子不相邻(如果相邻一定成大小不为\(1\)的树,一定有叶子结点满足在\(A\)中只有一个邻居),并且\(\overline A \setminus A\)\(A\)包围。因为\(A\)至少有两个格子,且\(\overline A\)联通无环,只能构造出triforce满足这个条件。

    借用下官方题解的图以助于理解:

    显然中间的黑色点必须要选。绿色点不能选因为没有点相邻,红色点不能选因为如果选了会出现环。

于是证完了。


怠惰,懒得写。

posted @ 2020-11-19 22:18  jz_597  阅读(261)  评论(0编辑  收藏  举报