题目名称 | 3870. [USACO23 Feb Bronze] Stamp Grid |
---|---|
输入输出 | yinzhang.in/out |
难度等级 | ★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 14 |
题目来源 | yuan 于2023-03-29加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:1, 通过率:100% | ||||
ムラサメ | 100 | 0.000 s | 0.00 MiB | C++ |
本题关联比赛 | |||
4043级2023省选模拟赛8 |
关于 Stamp Grid 的近10条评论(全部评论) |
---|
yinzhang.in
输出文件:yinzhang.out
简单对比我们要用一个印章在一个画布上做一幅画。
画布可以看作一个 $N×N$ 的网格矩阵,行列编号均为 $1 \sim N$。
初始时,画布网格中所有的单元格都是白色的,单元格 $(i,j)$ 指其中第 $i$ 行第 $j$ 列的单元格,我们希望将其中一部分单元格涂黑。
印章可以看作一个 $K×K$ 的网格矩阵,行列编号均为 $1 \sim K$,单元格 $(i,j)$ 指其中第 $i$ 行第 $j$ 列的单元格,其中一部分单元格中包含墨水。
使用印章在画布上作画时,按如下操作:
$(1)$、在每次盖下印章前可以调整印章的角度,将印章顺时针旋转 $0,90,270,360$ 度,即印章网格可能旋转。
$(2)$、可以在画布网格的任意位置按下印章,但前提是印章覆盖区域必须完全在画布网格内。具体来说,每次盖下印章即为:选择一对整数 $(i,j)$,要求 $i∈[1,N−K+1]$ 且 $j∈[1,N−K+1]$,对于每个 $(i′,j′)(1≤i′,j′≤K)$,如果当前印章网格的单元格 $(i′,j′)$ 中包含墨水,则画布网格的单元格 $(i+i′−1,j+j′−1)$ 被涂黑。多次盖章覆盖区域可以重叠,一旦某单元格被涂黑,那么它将保持黑色。
给定目标画作以及印章网格,请你判断能否完成画作。
第一行包含整数 $T$,表示共有 $T$ 组测试数据。
每组数据第一行包含一个空行。
下一行包含一个整数 $N$。
接下来 $N$ 行,包含一个 $N×N$ 的字符矩阵,表示目标画作,其中第 $i$ 行第 $j$ 个字符表示单元格 $(i,j)$ 的目标颜色,每个字符要么是 $*$(表示黑色),要么是 $.$(表示白色)。
下一行包含一个整数 $K$。
接下来 $K$ 行,包含一个 $K×K$ 的字符矩阵,表示印章网格,其中第 $i$ 行第 $j$ 个字符表示单元格 $(i,j)$ 的墨水情况,每个字符要么是 $*$(表示包含墨水),要么是 $.$(表示不含墨水)。
每组数据输出一行结果,能够完成画作输出 YES,否则输出 NO。
4 2 ** *. 1 * 3 .** .** *** 2 .* ** 3 ... .*. ... 3 .*. ... ... 3 **. .** ..* 2 .* *.
YES YES NO YES
第一组数据,贝茜可以如下盖章:
以画布网格中单元格 $(1,1)$ 作为左上角,盖下印章。
以画布网格中单元格 $(1,2)$ 作为左上角,盖下印章。
以画布网格中单元格 $(2,1)$ 作为左上角,盖下印章。
第二组数据,贝茜可以如下盖章:
以画布网格中单元格 $(2,2)$ 作为左上角,盖下印章。
以画布网格中单元格 $(2,1)$ 作为左上角,盖下印章。
顺时针旋转印章 $180$ 度。
以画布网格中单元格 $(1,2)$ 作为左上角,盖下印章。
第三组数据,无法完成画作。
第四组数据,贝茜可以如下盖章:
顺时针旋转印章 $90$ 度。
以画布网格中单元格 $(1,1)$ 作为左上角,盖下印章。
以画布网格中单元格 $(1,2)$ 作为左上角,盖下印章。
以画布网格中单元格 $(2,2)$ 作为左上角,盖下印章。
$1≤T≤100,1≤N≤20,1≤K≤N$