#P15610. [ICPC 2021 Jakarta R] Cell Game

[ICPC 2021 Jakarta R] Cell Game

说明

由于新冠疫情日益严重,他们的城市再次进入封锁状态,两兄弟阿尔多(Aldo)和邦丹(Bondan)被困在家中。他们已经完成了学期学习,正值假期,但如果不能出门,又能享受什么样的假期呢?然而,无聊确实能激发创造力。他们在无聊的假期中发明了一个新游戏。

游戏在一个 RRCC 列的棋盘上进行,每个格子中有零个或一个棋子。每个棋子被涂上 26 种颜色之一,用字符 'a' 到 'z' 表示。棋盘上至少有一个棋子。

两名对手轮流进行游戏。轮到某位玩家时,他选择一个棋子,并将其移动到相邻(即北、南、西、东方向)的一个格子中,目标格子不一定为空。一次移动被称为 好移动 当且仅当玩家将一个颜色为 xx 的棋子移动到一个已经包含相同颜色 xx 的棋子的格子中。游戏的目标是尽可能多地做出好移动。拥有严格更多好移动的玩家获胜。如果双方好移动数量相等,则为平局,无人获胜。

这个游戏可以无限进行下去。然而,阿尔多和邦丹同意总共进行 1010010^{100} 次移动,由阿尔多先手。

邦丹觉得这种游戏很无聊,所以他决定懒散地玩。每当轮到邦丹时,他会选择阿尔多上一次刚刚移动过的同一个棋子,并将其随机均匀地移动到一个相邻的格子中。

尽管如此,邦丹不喜欢输。在游戏开始前,他可能需要通过改变棋盘大小或移动棋子的初始位置来调整棋盘,使得即使邦丹懒散地玩,阿尔多获胜的概率也恰好为零。具体来说,棋盘可以从 R×CR \times C 扩展到 R×CR' \times C',其中 RRR' \geq RCCC' \geq C,并且每个棋子的初始位置可以移动到另一个格子,同时确保每个格子最多包含一个棋子。不能丢弃任何棋子,也不能向棋盘添加新棋子。

你的任务是找到一个新的棋盘设置,使得在总共进行 1010010^{100} 次移动的情况下,尽管邦丹懒散地玩,阿尔多(先手)获胜的概率为零。新棋盘设置应具有最小的总单元格数。如果有多个解,你只需输出其中任意一个。

输入格式

输入第一行包含两个整数 RRCC1R,C10001 \leq R, C \leq 1000),分别表示初始棋盘的行数和列数。保证棋盘上至少有 2 个格子。接下来 RR 行,每行包含 CC 个字符,表示初始棋盘状态。字符 '.' 表示空单元格,而小写字母('a'-'z')表示具有该颜色的棋子。保证棋盘上至少有一个棋子。

输出格式

输出第一行包含两个整数 RR'CC',分别表示新棋盘的行数和列数。接下来 RR' 行,每行包含 CC' 个字符,表示新棋盘状态。字符 '.' 表示空单元格,而小写字母('a'-'z')表示具有该颜色的棋子。新棋盘应保证在总共进行 1010010^{100} 次移动的情况下,尽管邦丹懒散地玩,阿尔多(先手)获胜的概率为零。新棋盘应具有最小的总单元格数,并且应包含与初始棋盘相同的棋子集合。

2 3
ab.
c.d
2 3
ab.
c.d
2 3
aa.
c.d
2 3
a.a
c.d
1 2
oo
1 3
o.o

提示

样例 #1 解释

没有两个相同颜色的棋子,因此任何玩家都无法做出好移动。阿尔多无法赢得此游戏。

翻译由 DeepSeek 完成