Coloring Torus(Atcoder Grand Contest 030 C)

Posted scx2015noip-as-php

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Coloring Torus(Atcoder Grand Contest 030 C)相关的知识,希望对你有一定的参考价值。

怎么外国都喜欢考脑筋急转弯……


题意

输入 $k$,要求构造一个 $n imes n$ 的矩阵($n$ 自选),使得恰好用 $k$ 中颜色把每个点都染色,并且同一种颜色的格子周围 相邻的每种颜色数量都相同。

比如矩阵中有两个格子的颜色是 $4$,其中一个格子周围有三个(颜色)$3$ 和一个 $1$,那另一个格子周围也得有三个 $3$ 和一个 $1$,但周围颜色的顺序不必相同。

矩阵的第 $1$ 行上面与第 $n$ 行相连,第 $1$ 列左面与第 $n$ 列相连。

$kle 1000$,且自选的 $n$ 必须在 $1$ 到 $500$ 范围内。

题解

首先 $kle 500$ 时很好做,令 $n=k$,第 $i$ 行全填 $i$ 就行了,所有格的行列相邻状况显然相同,不用说明了吧……

如果 $kgt 500$,就得考虑奇怪的方法了。

先思考一下,如果 $k$ 是 $4$ 的倍数,我们可以这么填:

比如 $k=8$ 的情况,构造一个 $n=k/4 imes 2=4$ 的矩阵,长这样:

$$1space 2space 3space 4$$

$$5space 6space 7space 8$$

$$1space 2space 3space 4$$

$$5space 6space 7space 8$$

这样粗暴且满足题意。

但 $k$ 不是 $4$ 的倍数呢?

我们考虑移位。

要移位的话,说明我们还要借鉴前面的方法,至少所以矩阵的大小暂定为把 $k$ 上取整为 $4$ 的倍数,即 $⌊(k+3)/4⌋ imes 2$。

但还不能简单地移位,比如 $k=6$ 时,每两行都填

$$1space 2space 3space 4$$

$$3space 4space 5space 6$$

这样错位后,同一种颜色的格子的左右两格颜色都相同,但上下两格颜色就不一定相同了。

所以我们考虑一种构造,使得同一种颜色的上下左右四格在某些意义上固定。比如取模

这就有一个很简单的方法了:规定第 $i$ 行第 $j$ 列的位置的颜色是 $(i+j)mod k$。这样直接满足上述性质。

可以手玩一下 $k=3,4$ 的情况,发现两个矩阵分别是(其实矩阵不唯一)

$$1space 2$$

$$2space 3$$

 

$$1space 2$$

$$4space 3$$

两个矩阵的长宽 $n$ 根据之前说过的式子,可算出都是 $2$。然后发现第二个矩阵的那个 $4$ 模 $n$ 后等于第一个矩阵对应的那个 $2$ ?

我们考虑这是怎么转化过去的。

当 $k=3$ 时,矩阵显然。

把 $k$ 加 $1$,即多了一种要用的颜色,我们把偶数行的 $2$ 换成了 $4$,保留了奇数行的 $2$。

好像就是把奇偶行分类,新加一种颜色时,把偶数行的对应颜色值 $+n$?

但是这个很好证明么?……换个大点的矩阵

 

以上是关于Coloring Torus(Atcoder Grand Contest 030 C)的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder Grand Contest #026 C - String Coloring

Atcoder ABC 069 C - 4-adjacent D - Grid Coloring

AtCoder 199 D - RGB Coloring 2(枚举,暴力)

卡牌分组([AtCoder ARC073]Ball Coloring)

すぬけ君の塗り絵 / Snuke's Coloring AtCoder - 2068 (思维,排序,贡献)

Torus 的纹理未正确应用