QOJ.ac

QOJ

시간 제한: 1.0 s 메모리 제한: 1024 MB 총점: 100 해킹 가능 ✓

#17985. 网格切割

통계

网格艺术家 Brue 有一个大小为 $N \times M$ 的网格。我们用 $(r, c)$ 表示从上往下的第 $r$ 行、从左往右的第 $c$ 列的单元格。Brue 计划将网格切割成多个碎片。

为了切割网格,Brue 首先需要决定每个 $NM$ 单元格的切割方向。对于每个单元格,切割应当沿着其两条对角线之一进行。

下图展示了一个切割 $4 \times 4$ 网格的例子。

在上述例子中,网格被切割成了 9 个碎片。

如果一个碎片满足以下条件,则被称为美丽的

  • 该碎片可以经过适当的旋转,使得构成其边界的线段要么平行于 $x$ 轴,要么平行于 $y$ 轴。
    • 根据碎片的切割方式,碎片上可能会有孔洞或切口。在这种情况下,必须能够旋转该碎片,使得构成这些部分的线段也平行于 $x$ 轴或 $y$ 轴。在下图中,左边是一个带有孔洞的美丽碎片的例子,右边是一个带有切口的美丽碎片的例子。(对应的碎片用绿色标记。)

在探索如何更美观地切割网格时,Brue 对网格的边产生了兴趣。在这里,“边”的定义如下:

  • 位于两个垂直相邻的网格单元之间的长度为 1 的线段称为水平边
  • 位于两个水平相邻的网格单元之间的长度为 1 的线段称为垂直边
  • 我们把水平边和垂直边统称为

根据定义,在大小为 $N \times M$ 的网格中,有 $(N - 1)M$ 条水平边和 $N(M - 1)$ 条垂直边。

Brue 已经决定了其中一些 $NM$ 单元格的切割方向,但其余的尚未决定。此外,Brue 希望 $K$ 条特定的边能够位于美丽的碎片内部。(这些边不需要包含在同一个碎片中。)

请判断是否可以以满足上述条件的方式切割网格,如果可以,请找到一种方案。

输入格式

输入的第一行包含三个空格分隔的整数 $N, M$ 和 $K$。($2 \le N \le 50$;$2 \le M \le 50$;$0 \le K \le (N - 1)M + N(M - 1)$)

接下来的 $N$ 行中,第 $r$ 行包含 $M$ 个字符 $C_{r,1}, C_{r,2}, \dots, C_{r,M}$,表示每个单元格的切割方向。$C_{r,c}$ 是 /\. 之一。

  • 如果 $C_{r,c}$ 是 /\,它表示单元格 $(r, c)$ 的切割方向。
  • 如果 $C_{r,c}$ 是 .,它表示单元格 $(r, c)$ 的切割方向尚未决定。

接下来的 $K$ 行中,第 $i$ 行包含三个空格分隔的整数 $d_i, a_i$ 和 $b_i$,表示要包含在美丽碎片内部的第 $i$ 条边。这 $K$ 条边两两不同。($0 \le d_i \le 1$;$1 \le a_i \le N - (1 - d_i)$;$1 \le b_i \le M - d_i$)

  • 如果第 $i$ 条边是水平边,则 $d_i = 0$,且该边上方的单元格为 $(a_i, b_i)$。
  • 如果第 $i$ 条边是垂直边,则 $d_i = 1$,且该边左侧的单元格为 $(a_i, b_i)$。

输出格式

如果可以切割网格使得给定的 $K$ 条边都位于美丽的碎片内部,在第一行输出 YES

在接下来的 $N$ 行中,输出如何切割网格。每行应包含 $M$ 个字符,每个字符必须是 /\

如果无法满足条件切割网格,在第一行输出 NO

样例

输入样例 1

4 4 2
..//
.\./
.\..
\./\
0 3 3
1 3 1

输出样例 1

YES
\\//
/\\/
\\\/
\\/\

输入样例 2

2 3 2
.\.
...
1 2 1
1 2 2

输出样例 2

NO

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.