AT_past202004_c 山崩し
题目描述
给定一个整数 $2 \leq N \leq 50$,有一个纵向 $N$ 行、横向 $2N-1$ 列的格子。
从上到下的第 $i$ 行,从左到右的第 $j$ 列的格子记作格子 $(i, j)$。
这个格子用黑白两色以**山型**方式涂色。具体来说,对于满足 $1 \leq i \leq N,\ 1 \leq j \leq 2N-1$ 且 $|j-N| < i$ 的格子 $(i, j)$ 被涂为黑色,其余格子为白色。
下面是 $N=5$ 时的例子。(`#` 表示黑色格子,`.` 表示白色格子)
```
....#....
...###...
..#####..
.#######.
#########
```
接下来,在部分黑色格子上写上 `X`。
写入后的状态以一个由字符组成的大小为 $N \times (2N-1)$ 的二维数组 $S$ 给出,$S_{i,j}$ 表示格子 $(i, j)$ 的状态。若 $S_{i,j}$ 为 `X`,则格子 $(i, j)$ 是写有 `X` 的黑色格子;若 $S_{i,j}$ 为 `#`,则格子 $(i, j)$ 是未写 `X` 的黑色格子;若 $S_{i,j}$ 为 `.`,则格子 $(i, j)$ 是白色格子。
然后,按 $i = N-1, N-2, \cdots, 1$ 的顺序,进行如下操作:
- 对于 $2 \leq j \leq 2N-2$,如果格子 $(i, j)$ 是黑色且未写 `X`,并且在格子 $(i+1, j-1), (i+1, j), (i+1, j+1)$ 中至少有一个写有 `X`,则在格子 $(i, j)$ 上写上 `X`。
请计算所有操作结束后的格子状态。
输入格式
输入通过标准输入给出,格式如下:
> $N$
> $S_{1,1}S_{1,2}\cdots S_{1,2N-1}$
> $S_{2,1}S_{2,2}\cdots S_{2,2N-1}$
> $\vdots$
> $S_{N,1}S_{N,2}\cdots S_{N,2N-1}$
输出格式
所有操作结束后,格子 $(i, j)$ 的状态记为 $T_{i,j}$(黑色且写有 `X` 时为 `X`,黑色且未写 `X` 时为 `#`,白色时为 `.`),请按如下格式输出:
> $T_{1,1}T_{1,2}\cdots T_{1,2N-1}$
> $T_{2,1}T_{2,2}\cdots T_{2,2N-1}$
> $\vdots$
> $T_{N,1}T_{N,2}\cdots T_{N,2N-1}$
说明/提示
### 注意
本题在 2020 年 5 月 2 日 18:00(日本标准时间)前禁止讨论。如有讨论,可能会被要求赔偿。
考试结束后可以公开总得分和认证等级,但请不要发布关于解题情况等信息。
### 约束条件
- $2 \leq N \leq 50$
- $S_{i,j}$ 只可能为 `.`、`#` 或 `X`
- $S$ 对应的格子状态,是在山型涂色的黑色格子中写入至少一个 `X` 得到的
由 ChatGPT 4.1 翻译