#P1195. 俄式简餐

俄式简餐

俄式简餐

题目描述

现有以下两类俄罗斯方块:

2F4E64D531E641B794FE4ED7C4A1D885.png

假如两类俄罗斯方块均无限量使用,可任意竖直翻转、水平翻转、旋转 90/180/27090◦/180◦/270◦。 请构造出不重叠、不遗漏、严丝合缝地填充 nnmm 列网格的方案,或报告无解。 例如,下图展示了对 6688 列网格的其中一种合法填充方案。

5EEA720876124976863AC723E09000F5.png

输入格式

本题单个测试点可能含有多组数据。输入的第一行包含数据组数 T(1T105)T (1≤ T ≤ 10^5)。 对于每组数据,一行包含两个整数 nnm(n×m105,n,m1)m (n × m ≤ 10^5, n, m ≥ 1),分别表示网格的行数和列数。 保证所有数据 n×mn × m 的总和不超过 2×1052 × 10^5

输出格式

对于每组数据: 先在一行内输出 YESNO(本题严格区分大小写),表示是否有解。 若有解,则再输出 nn 行,每行包含 mm 个整数,描述填充方案。其中各俄罗斯方块从 11 开始依次赋予不同的正整数编号,且编号在输出的 n×mn × m 个整数中恰好出现 44 次以标识该俄罗斯方块的类型、方向及在网格中的位置。不允许跳号,即占用编号 k(k>1)k (k > 1) 之前须优先占用编号 1,2,...,k11, 2, . . . , k − 1。 如果存在多种合法的填充方案,输出任意一种即可。

样例 #1

样例输入 #1

3
2 3
2 4
6 8

样例输出 #1

NO
YES
1 1 1 1
2 2 2 2
YES
1 1 1 2 11 11 11 11
1 4 5 2 2 2 12 12
8 4 5 5 5 6 12 10
8 4 4 6 6 6 12 10
8 8 9 9 9 9 7 10
3 3 3 3 7 7 7 10