QOJ.ac

QOJ

时间限制: 1 s 内存限制: 512 MB 总分: 100

#2377. 投影

统计

大家都知道你是 TensorFlow 的粉丝。因此,你接受了挑战,要通过两个投影来重现 TensorFlow 的标志。

考虑一个 $n \times m \times h$ 的三维空间,以及两个投影(两个维度分别为 $n \times m$ 和 $n \times h$ 的矩阵,元素为 0 或 1)。你需要计算出一组可能放置在三维空间内的立方体,使得由这些立方体组成的三维物体在光线从左侧和前方照射时,能投射出投影矩阵所指定的阴影。如果无法实现,请直接输出 $-1$。如果可以实现,你必须找到两组解,一组包含最大数量的立方体,另一组包含最小数量的立方体。假设没有重力(立方体放置在三维空间内的确切位置,不需要任何支撑)。我们假设 1 代表阴影,0 代表光线。

如果存在多个这样的解,你必须输出字典序最小的那一个。如果解 $A$ 在第一个与解 $B$ 不同的数字上比 $B$ 小,则称解 $A$ 字典序小于解 $B$。

例如,解 $[(0, 0, 0), (1, 1, 1)]$ 小于 $[(1, 1, 1), (0, 0, 0)]$。

输入格式

第一行包含三个由空格分隔的整数 $n, m, h$ ($1 \le n, m, h \le 100$),表示空间维度。

接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符为 1 或 0,代表阴影区域 (1) 或光照区域 (0),描述了来自前方的投影。

再接下来的 $n$ 行,每行包含 $h$ 个字符,格式同上,描述了来自左侧的投影。

输出格式

输出的第一行应包含一个数字,如果无解则为 $-1$,否则为 $k_{max}$,表示在生成输入给定的两个投影的前提下,我们在空间中可以放置的最大立方体数量。

接下来的 $k_{max}$ 行应包含三元组 $x, y, z$ ($0 \le x < n, 0 \le y < m, 0 \le z < h$),表示在最大立方体数量的解中,字典序最小的那个解所包含的立方体坐标。

如果存在解,则再下一行包含 $k_{min}$,表示在生成输入给定的两个投影的前提下,我们在空间中可以放置的最小立方体数量。

此后,接下来的 $k_{min}$ 行应包含三元组 $x, y, z$ ($0 \le x < n, 0 \le y < m, 0 \le z < h$),表示在最小立方体数量的解中,字典序最小的那个解所包含的立方体坐标。

样例

样例输入 1

5 3 3
111
010
010
010
010
111
100
110
100
100

样例输出 1

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 2
00
00
11
11

样例输出 2

-1

样例输入 3

2 3 2
101
011
10
11

样例输出 3

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

说明

坐标为 $(x, y, z)$ 的立方体会在 $n \times m$ 投影的第 $x$ 行第 $y$ 列,以及 $n \times h$ 投影的第 $x$ 行第 $z$ 列产生阴影(索引从 0 开始)。

TensorFlow 标志

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.