AT_abc443_e [ABC443E] Climbing Silver
题目描述
有一个 $N \times N$ 的网格,位于从上往下第 $i$ 行和从左往右第 $j$ 列的单元格叫做 $(i,j)$。
网格由长度为 $N$ 的字符串 $S_1,S_2,\dots,S_N$ 描述。如果 $S_i$ 的第 $j$ 个字符是 `.`,$(i,j)$ 就是一个空单元格;如果是 `#`,$(i,j)$ 就是一个墙单元格。
最初,高桥君位于空单元格 $(N,C)$,并重复以下动作 $N-1$ 次:
- 如果他当前位于 $(r,c)$,则指定 $(r-1,c-1),(r-1,c),(r-1,c+1)$ 中的一个作为目的地。在此,他不能指定网格中不存在的单元格作为目的地。
- 如果目的地 $(a,b)$ 是一个墙单元格,则会出现以下情况:
- 如果对于所有满足 $a < i \le N$ 的整数 $i$,即 $i\in[a+1,N]$,$(i,b)$ 当前是一个空单元格,那么他将摧毁位于 $(a,b)$ 的墙并移动到该处。也就是说,$(a,b)$ 变成空格,他移动到 $(a,b)$。
- 否则,他将无法移动。在这种情况下,即使他没有进行 $N-1$ 次移动,也会立即结束移动。
- 如果目的地 $(a,b)$ 是一个空格,那么他会移动到 $(a,b)$ 。
输出长度为 $N$ 的字符串 $R$,满足以下条件:
- 如果他在移动过程中没有失败,可以到达 $(1,i)$,那么 $R$ 的第 $i$ 个字符是 `1`。
- 否则, $R$ 的第 $i$ 个字符为 `0`。
给你 $T$ 个测试用例,请逐一解决。
输入格式
输入内容由标准输入法提供,格式如下:
>$T\\$
>$\text{case}_1\\$
>$\text{case}_2\\$
>$\vdots\\$
>$\text{case}_T\\$
每个测试用例的格式如下:
>$N$ $C\\$
>$S_1\\$
>$S_2\\$
>$\vdots\\$
>$S_N\\$
输出格式
输出 $T$ 行。
第 $i$ 行应包含第 $i$ 个测试用例的答案。
说明/提示
### 样例 $1$ 解释
此输入包含五个测试用例。
例如,对于第一个测试用例,他可以在如下运动中到达 $(1,3)$ 而不会失败:
- 最初,他位于 $(5,3)$。
- 他移动到空格 $(4,2)$。
- $(3,3)$ 是一个有墙的单元格,但是由于 $(4,3),(5,3)$ 目前都是空单元格,他摧毁了 $(3,3)$ 处的墙并移动到 $(3,3)$。
- $(2,3)$ 是一个有墙的单元格,但是由于 $(3,3),(4,3),(5,3)$ 目前都是空格,因此他摧毁了 $(2,3)$ 处的墙,并移动到 $(2,3)$ 处。
- $(1,3)$ 是一个有墙的单元格,但是由于 $(2,3),(3,3),(4,3),(5,3)$ 目前都是空格,因此他摧毁了 $(1,3)$ 处的墙,并移动到 $(1,3)$ 处。
他可以到达 $(1,1),(1,3),(1,4),(1,5)$ 而不会在移动过程中失败,因此打印 `10111`。
### 数据规模与约定
- $T,N,C$ 是整数
- $1 \le T \le 50000$
- $2 \le N \le 3000$
- $1 \le C \le N$
- $S_i$ 是长度为 $N$ 的字符串,由 `.` 和 `#` 组成
- $S_N$ 的第 $C$ 个字符是 `.`
- 对于每个输入,$N^2$ 的总和不超过 $9 \times 10^6$