#P14689. [ICPC 2025 Yokohama R] ICPC Board

[ICPC 2025 Yokohama R] ICPC Board

Description

作为一名考古学家,你在一个古城的遗址中发现了一块长方形的木制板。木板被划分为一个网格,每个网格单元格最初似乎都刻有字母 'C'、'I' 或 'P' 中的一个。然而,由于年代久远,部分字母现已无法辨识。

在你的调查过程中,你提出了以下假设:木板上任何一个 2×22 \times 2 的方格原本都包含两个 'C'、一个 'I' 和一个 'P'。

你现在想检验这个假设是否与已发现的木板相符。如果相符,请展示一种符合该假设的原始字母排列的可能性。

Input Format

输入包含一个或多个测试用例。输入的第一行包含一个整数 tt (1t5001 \le t \le 500),表示测试用例的数量。接下来是 tt 个测试用例的描述,每个用例的格式如下。

n mn\ m c1,1 c1,2  c1,mc_{1,1}\ c_{1,2}\ \cdots\ c_{1,m} c2,1 c2,2  c2,mc_{2,1}\ c_{2,2}\ \cdots\ c_{2,m} \vdots cn,1 cn,2  cn,mc_{n,1}\ c_{n,2}\ \cdots\ c_{n,m}

一个测试用例的第一行包含两个整数 nnmm (2n10002 \le n \le 1000, 2m10002 \le m \le 1000)。它们分别表示木板的行数和列数。接下来的 nn 行,每行包含 mm 个字符,描述了已发现的木板。第 ii 行的第 jj 个字符 ci,jc_{i,j} 是 'C'、'I'、'P' 或 '?' 中的一个。如果 ci,jc_{i,j} 是 'C'、'I' 或 'P',则表示第 ii 行第 jj 列的单元格可以识别为刻有该字母。如果 ci,jc_{i,j} 是 '?',则表示该单元格的字母无法辨识。

所有测试用例的 nn 之和不超过 10001000mm 也满足相同条件。

Output Format

对于每个测试用例,如果该假设与已发现的木板不符,则单独输出一行 nono。否则,第一行输出 yesyes,然后输出 nn 行,表示一种符合该假设的原始字母排列的可能性。这 nn 行中的每一行应包含 mm 个字符。第 ii 行的第 jj 个字符应为第 ii 行第 jj 列单元格中的字母。如果有多种可能的排列,你可以输出其中任意一种。

3
5 7
I?I?I?I
?P?P?P?
I?I?I?I
?P?P?P?
I?I?I?I
4 4
ICPC
CPCI
ICPC
CPCI
2 2
??
??
yes
ICICICI
CPCPCPC
ICICICI
CPCPCPC
ICICICI
no
yes
IC
PC

Hint

翻译由 DeepSeek V3 完成