CF2057G Secret Message 做题笔记

繁花艳丽 终或飘零
能想象在吃鸡块,咬一口下去发现是冰激凌的感受吗?没错就是这道题。你以为它是 OI 题,想了 \(\infty\) 时间后发现其实是高联题。

题目大意

对于一个 \(n\times m\) 的网格图,其上有若干个格子是空格子。

\(s\) 为空格子个数,\(p\) 是空格子形成的图形的边长(每个格子是 \(1\times 1\) 的正方形)。要求构造方案选出不超过 \(\frac{1}{5}(s+p)\)格子,使得任何没有被选中的空格子都和至少一个选中的格子相邻。

可以证明方案的存在性。

证明

尝试容斥原理,如果能够构造 \(5\) 个方案,并且这些方案选出的点数量和为 \(s+p\),那么一定能找到一个方案,选点数不超过 \(\frac{1}{5}(s+p)\)

一个想法是把格子染成 \(5\) 中不同的颜色,第 \(i\) 种方案就是选择染了第 \(i\) 种颜色的格子。为了尽量保证覆盖完所有空白点,应该让每一种颜色的格子尽可能均匀的分布,具体来说,考虑如下分布:

给每个点染色,使得任何一个点及其 \(4\) 个相邻的点形成的这 \(5\) 个点恰包含 \(5\) 种颜色。

先假设存在这样的染色方案。但是如果只选某一种颜色的所有空白点,不一定能覆盖所有点,事实上,如果一个空白点有一个颜色为 \(i\) 的相邻的非空白点,那么这个空白点不会被覆盖。所以不仅要选第 \(i\) 种颜色的空白点,还需要选择前述的那种空白点。显然,这 \(5\) 种构造方案的选点数总和就是 \(s+p\),并且能完成覆盖。

那么最后的问题是如何设计这样的染色方案。发现每一行都使用 \(1, 2, 3, 4, 5, 1, 2, 3, 4, 5......\) 的循环形式即可。相邻两行要错开两位。

总结

题目中说可以证明方案的存在性,启发我们这是一道组合数学题,应该考虑证明过程。考虑 \(\dfrac{1}{5}\) 的由来,因此可以尝试用容斥。

推广

显然可以推广到 \(8\) 联通的情况,如果定义 \(p\) 为所有空白点的非空白八连通邻居个数和,并要求选出不超过 \(\frac{1}{9}(s+p)\) 个空白点,使得任意没有被选中的空白点都存在选中的八连通相邻空白点。那么只要设计一个 \(9\) 色的染色方案,使得任意九宫格的数不相等即可。 这样的方案显然存在。

posted @ 2025-06-24 11:54  yanzihe  阅读(20)  评论(0)    收藏  举报