P15610 [ICPC 2021 Jakarta R] Cell Game
题目描述
由于新冠疫情日益严重,他们的城市再次进入封锁状态,两兄弟阿尔多(Aldo)和邦丹(Bondan)被困在家中。他们已经完成了学期学习,正值假期,但如果不能出门,又能享受什么样的假期呢?然而,无聊确实能激发创造力。他们在无聊的假期中发明了一个新游戏。
游戏在一个 $R$ 行 $C$ 列的棋盘上进行,每个格子中有零个或一个棋子。每个棋子被涂上 26 种颜色之一,用字符 'a' 到 'z' 表示。棋盘上至少有一个棋子。
两名对手轮流进行游戏。轮到某位玩家时,他选择一个棋子,并将其移动到相邻(即北、南、西、东方向)的一个格子中,目标格子不一定为空。一次移动被称为 **好移动** 当且仅当玩家将一个颜色为 $x$ 的棋子移动到一个已经包含相同颜色 $x$ 的棋子的格子中。游戏的目标是尽可能多地做出好移动。拥有严格更多好移动的玩家获胜。如果双方好移动数量相等,则为平局,无人获胜。
这个游戏可以无限进行下去。然而,阿尔多和邦丹同意总共进行 $10^{100}$ 次移动,由阿尔多先手。
邦丹觉得这种游戏很无聊,所以他决定懒散地玩。每当轮到邦丹时,他会选择阿尔多上一次刚刚移动过的同一个棋子,并将其随机均匀地移动到一个相邻的格子中。
尽管如此,邦丹不喜欢输。在游戏开始前,他可能需要通过改变棋盘大小或移动棋子的初始位置来调整棋盘,使得即使邦丹懒散地玩,阿尔多获胜的概率也恰好为零。具体来说,棋盘可以从 $R \times C$ 扩展到 $R' \times C'$,其中 $R' \geq R$ 且 $C' \geq C$,并且每个棋子的初始位置可以移动到另一个格子,同时确保每个格子最多包含一个棋子。不能丢弃任何棋子,也不能向棋盘添加新棋子。
你的任务是找到一个新的棋盘设置,使得在总共进行 $10^{100}$ 次移动的情况下,尽管邦丹懒散地玩,阿尔多(先手)获胜的概率为零。新棋盘设置应具有最小的总单元格数。如果有多个解,你只需输出其中任意一个。
输入格式
输入第一行包含两个整数 $R$ 和 $C$($1 \leq R, C \leq 1000$),分别表示初始棋盘的行数和列数。保证棋盘上至少有 2 个格子。接下来 $R$ 行,每行包含 $C$ 个字符,表示初始棋盘状态。字符 '.' 表示空单元格,而小写字母('a'-'z')表示具有该颜色的棋子。保证棋盘上至少有一个棋子。
输出格式
输出第一行包含两个整数 $R'$ 和 $C'$,分别表示新棋盘的行数和列数。接下来 $R'$ 行,每行包含 $C'$ 个字符,表示新棋盘状态。字符 '.' 表示空单元格,而小写字母('a'-'z')表示具有该颜色的棋子。新棋盘应保证在总共进行 $10^{100}$ 次移动的情况下,尽管邦丹懒散地玩,阿尔多(先手)获胜的概率为零。新棋盘应具有最小的总单元格数,并且应包含与初始棋盘相同的棋子集合。
说明/提示
#### 样例 #1 解释
没有两个相同颜色的棋子,因此任何玩家都无法做出好移动。阿尔多无法赢得此游戏。
翻译由 DeepSeek 完成