luogu#P5802. [SEERC2019] Projection
[SEERC2019] Projection
题目描述
你是一个 TensorFlow 的死忠粉,因此,你想要从两个投影图形来还原出 TensorFlow 的图标。
假定你有一个 3D 空间,尺寸为 ,以及两个投影图形(一个 的矩阵和一个 的矩阵,矩阵里的元素都为 或 )。你需要计算出一些 的小正方体的集合,使得这些正方体放入 3D 空间后构成的立体的正投影(光照立体正面在立体后侧形成的投影)和右投影(光照立体左面在立体右侧形成的投影)与题目给定的投影图形一致。如果无解,输出 。如果有解,你需要计算出两个满足条件的集合,一个包含的小正方体数量最少,另一个最多。假定正方体的摆放不受重力影响(即小正方体在 3D 空间中可以随意放置,悬空也不需要支撑)。规定矩阵中的 代表有阴影遮住, 代表无阴影遮住。
如果有多解,你需要输出字典序最小的解。一个解 字典序比解 小,当且仅当对于两个解中第一对不相同的数字, 中的数字小于 中的。
例如,解 比解 字典序更小。
输入格式
第一行包含三个整数 ,代表 3D 空间的尺寸。
接下来的 行中,每一行包含 个字符 或 ,其中 代表有阴影遮住, 代表无阴影遮住。这 个字符描述了一个正投影。
接下来的 行中,每一行包含 个字符,格式同上。这 个字符描述了一个右投影。
输出格式
如果无解,仅在第一行输出 即可。
如果有解,第一行输出一个整数 ,代表满足题目要求的解中小正方体个数的最大值。
接下来 行中每行输出三个整数 $x, y, z \ (0 \leq x < n, 0 \leq y < m, 0 \leq z < h)$,代表小正方体最多的解中字典序最小的解的 个小正方体的放置位置。
接下来一行输出一个整数 ,代表满足题目要求的解中小正方体个数的最小值。
接下来 行中每行输出三个整数 $x, y, z \ (0 \leq x < n, 0 \leq y < m, 0 \leq z < h)$,代表小正方体最少的解中字典序最小的解的 个小正方体的放置位置。
5 3 3
111
010
010
010
010
111
100
110
100
100
14
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 1 0
2 1 0
2 1 1
3 1 0
4 1 0
8
0 0 0
0 1 1
0 2 2
1 1 0
2 1 0
2 1 1
3 1 0
4 1 0
2 2 2
00
00
11
11
-1
2 3 2
101
011
10
11
6
0 0 0
0 2 0
1 1 0
1 1 1
1 2 0
1 2 1
4
0 0 0
0 2 0
1 1 0
1 2 1
提示
一个放置在 的小正方体会在正投影的 位置产生一个有阴影遮住的区域,并在右投影的 位置产生一个有阴影遮住的区域。
坐标从 开始编号。