QOJ.ac

QOJ

実行時間制限: 90.0 s メモリ制限: 256 MB 満点: 100

#17341. Cubic Colonies

統計

在公元 3456 年,地球太小了,无法让数百亿人和平共处。立方体星际殖民计划(Interstellar Colonization Project with Cubes, ICPC)是一个旨在将地球上的人口迁移到太空殖民地以缓解这一问题的项目。ICPC 获得了政府的资助,并利用预制的立方体构件,以极低的成本快速制造太空殖民地。

最大的殖民地看起来像一个魔方。它由 $3 \times 3 \times 3$ 个立方体构件组成(图 J.1A)。较小的殖民地则缺少最大殖民地中的一些立方体。

当我们用多个立方体构件制造殖民地时,我们从单个立方体开始。然后,我们迭代地将下一个立方体粘合到已有的立方体上,使得它们的接触面完全重合。每一对接触的面都会被粘合。

图 J.1:最大殖民地和较小殖民地的示例

然而,就在第一次发射前,我们发现了殖民地的一个设计缺陷。我们需要添加一根电缆来连接每个殖民地表面上的两个点,但我们无法在短时间内改变预制立方体的内部。因此,我们决定在每个殖民地的表面贴一根电缆。如果电缆的一部分不在表面上,它在发射过程中就会被剪断,所以我们必须将整条电缆都铺设在表面上。由于预算限制,我们希望使电缆的长度最小。图 J.1B 中的虚线就是这样一个例子。

编写一个程序,在给定殖民地的形状和其表面上的一对点的情况下,计算该殖民地可能的最短电缆长度。

输入格式

输入包含一系列数据集。每个数据集按以下格式描述单个殖民地以及该殖民地的一对点。

$$x_1 \quad y_1 \quad z_1 \quad x_2 \quad y_2 \quad z_2$$ $$b_{0,0,0} \quad b_{1,0,0} \quad b_{2,0,0}$$ $$b_{0,1,0} \quad b_{1,1,0} \quad b_{2,1,0}$$ $$b_{0,2,0} \quad b_{1,2,0} \quad b_{2,2,0}$$ $$b_{0,0,1} \quad b_{1,0,1} \quad b_{2,0,1}$$ $$b_{0,1,1} \quad b_{1,1,1} \quad b_{2,1,1}$$ $$b_{0,2,1} \quad b_{1,2,1} \quad b_{2,2,1}$$ $$b_{0,0,2} \quad b_{1,0,2} \quad b_{2,0,2}$$ $$b_{0,1,2} \quad b_{1,1,2} \quad b_{2,1,2}$$ $$b_{0,2,2} \quad b_{1,2,2} \quad b_{2,2,2}$$

$(x_1, y_1, z_1)$ 和 $(x_2, y_2, z_2)$ 是殖民地表面上的两个不同的点,其中 $x_1, x_2, y_1, y_2, z_1, z_2$ 是满足 $0 \le x_1, x_2, y_1, y_2, z_1, z_2 \le 3$ 的整数。

当存在一个对角顶点为 $(i, j, k)$ 和 $(i + 1, j + 1, k + 1)$ 的立方体构件时,$b_{i,j,k}$ 为 #;如果没有立方体,则 $b_{i,j,k}$ 为 .

图 J.1A 对应于样例输入中的第一个数据集,而图 J.1B 对应于第二个数据集。

如果两个立方体仅在顶点或棱上接触,电缆可以通过它们之间宽度为零的缝隙。在图 J.2A(样例输入中的第三个数据集)中,最短电缆从点 A $(0, 0, 2)$ 到点 B $(2, 2, 2)$,穿过由六个立方体共享的点 $(1, 1, 2)$。类似地,在图 J.2B(样例输入中的第四个数据集)中,最短电缆穿过两个未直接粘合的立方体之间的缝隙。当两个立方体仅共享一个顶点时,你可以将电缆穿过该顶点(图 J.2C;样例输入中的第五个数据集)。

你可以假设不存在由除中心立方体外的所有 $3 \times 3 \times 3$ 个立方体组成的殖民地。

输入以六个零结束。

图 J.2:虚线表示最短电缆。为了便于说明,部分立方体显示为半透明。

输出格式

对于每个数据集,输出一行,包含连接给定的两个点的最短电缆长度。我们接受绝对误差小于 $0.0001$ 的答案。你可以假设给定的两个点总是可以被电缆连接。

样例

样例输入 1

0 0 0 3 3 3
###
###
###
###
###
###
###
###
###
3 3 0 0 0 3
#..
###
###
###
###
###
#.#
###
###
0 0 2 2 2 2
...
...
...
.#.
#..
...
##.
##.
...
0 1 2 2 1 1
...
...
...
.#.
#..
...
##.
##.
...
3 2 0 2 3 2
###
..#
...
..#
...
.#.
..#
..#
.##
0 0 0 0 0 0

样例输出 1

6.70820393249936941515
6.47870866461907457534
2.82842712474619029095
2.23606797749978980505
2.82842712474619029095

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.