Universal Cup Judging System

Universal Cup

Limite de temps : 2.0 s Limite de mémoire : 1024 MB Points totaux : 100 Difficulté: [afficher] Hackable ✓
Statistiques

Little Cyan Fish 是逻辑谜题的爱好者。今天,他正在玩一种经典谜题“Nurikabe”(ぬりかべ)的特殊版本。

该谜题在一个 $n \times m$ 的网格上进行。我们将第 $x$ 行第 $y$ 列的单元格记为 $(x, y)$,其中 $1 \le x \le n$ 且 $1 \le y \le m$。

目标是将一些(可能为零)单元格涂成黑色,其余单元格保持白色。黑色和白色单元格分别形成连通的区域,如果两个单元格共享一条边(水平或垂直,不包括对角线),则认为它们是连通的。形式上,两个相同颜色的单元格 $C_1(x_1, y_1)$ 和 $C_2(x_2, y_2)$ 被认为处于同一个区域,当且仅当满足以下至少一个条件:

  • $|x_1 - x_2| + |y_1 - y_2| = 1$
  • 存在另一个相同颜色的单元格 $C_3(x_3, y_3)$,使得 $C_1$ 和 $C_3$ 处于同一个区域,且 $C_2$ 和 $C_3$ 处于同一个区域。

图 4:$n=7$ 且 $m=7$ 的示例网格。

线索(Clues)是放置在特定单元格中的数字。带有线索的单元格不能被涂成黑色。

被涂黑的(黑色)单元格必须满足以下两个条件:

  • (连通性):所有黑色单元格必须属于同一个黑色区域。
  • (无 $2 \times 2$ 块):不存在任何 $2 \times 2$ 的单元格块完全为黑色。

未涂色的(白色)单元格必须满足以下两个条件:

  • (每个区域一个线索):每个白色区域必须恰好包含一个线索。
  • (大小限制):每个白色区域的面积(单元格数量)必须等于该区域内线索的数值。

例如,Little Cyan Fish 认为以下四种解法是不正确的,原因如下:

  • 在第一个解法中,存在一个 $2 \times 2$ 的黑色单元格块。
  • 在第二个解法中,存在多于一个的黑色区域。
  • 在第三个解法中,左上角的白色区域包含多于一个线索。
  • 在第四个解法中,左下角的白色区域不包含任何线索,且右下角的白色区域不满足面积要求。

图 5:给定谜题的错误解法

而以下解法是一个正确的解法。

图 6:给定谜题的正确解法

现在,给定一个恰好包含一个线索的 Nurikabe 谜题。你需要给出该谜题的一个解。

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$ ($T \ge 1$),表示测试数据的组数。对于每组测试数据:

第一行包含两个整数 $n$ 和 $m$ ($n, m \ge 1$),表示网格的长和宽。

下一行包含三个整数 $i, j, x$ ($1 \le i \le n, 1 \le j \le m, 1 \le x \le n \cdot m$),表示唯一的线索位于单元格 $(i, j)$,数值为 $x$。

保证所有测试数据的 $n \cdot m$ 之和不超过 $10^6$。

输出格式

对于每组测试数据:

如果无法通过涂色满足所有要求,输出一行 “No”。

否则,第一行输出 “Yes”。

接下来的 $n$ 行描述你的解法。这 $n$ 行中的第 $i$ 行应包含恰好 $m$ 个字符,字符为 “.”(点)或 “#”(井号)。第 $j$ 个字符描述单元格 $(i, j)$ 的状态。

  • 如果字符为 “.”,表示该单元格未涂色(白色)。
  • 如果字符为 “#”,表示该单元格已涂色(黑色)。

样例

样例输入 1

4
3 3
2 2 1
5 5
2 2 1
4 6
1 1 20
2 5
2 5 10

样例输出 1

Yes
###
#.#
###
No
Yes
......
......
#.....
###...
Yes
.....
.....

说明

想在解决所有问题后寻找一些乐趣吗?它来了。

图 7:第 2 届 Universal Cup 谜题竞赛:Nurikabe(感谢 apiad 提供)

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.