QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100

#9227. 水管工亨利

الإحصائيات

Henryk 必须完成若干个三维水力订单。每个订单包括将进水口与出水口连接起来。这种连接是通过一系列管道和弯头配件完成的。管道是直管段,弯头将两根管道的末端以直角连接起来。在进水口处,我们必须根据指定的进水方向放置第一个弯头;在出水口处,我们必须根据指定的出水方向放置最后一个弯头。

进水口和出水口都位于水平面上,这意味着这些方向向量的 $z$ 坐标为 $0$。

为简化起见,我们假设进水口、出水口和所有弯头都没有尺寸,即它们是三维空间 $\mathbb{R}^3$ 中的点,而管道也没有宽度,即它们是三维空间 $\mathbb{R}^3$ 中的线段。

进水口和出水口位于不同的位置。第一根管道必须从进水口点开始,并垂直于进水方向。随后的每一根管道必须从前一根管道的末端开始,并与其垂直。最后一根管道必须在出水口点结束,并垂直于出水方向。每根管道的长度必须为正。

管道除了上述描述的位置外,不能在其他任何地方相交。特别地,所有弯头必须位于不同的点,且不能位于任何管道内部,管道除了弯头外不能共享任何公共点。

对于每个订单,请判断它是否可以完成,如果可以,计算完成该订单所需的最少弯头数量。

输入格式

输入的第一行包含订单数量 $t$ ($1 \le t \le 100$)。每个订单由四行描述。

每个订单的第一行包含三个整数 $x_1, y_1, z_1$ ($-20 \le x_1, y_1, z_1 \le 20$),描述进水口的点 $(x_1, y_1, z_1)$。

订单的第二行包含两个整数 $p_1, q_1$ ($-20 \le p_1, q_1 \le 20, (p_1, q_1) \neq (0, 0)$),描述进水口的方向。

接下来的两行以相同的格式描述出水口的坐标 $(x_2, y_2, z_2)$ 和方向 $(p_2, q_2)$。

进水口和出水口位于不同的点:$(x_1, y_1, z_1) \neq (x_2, y_2, z_2)$。

水流沿向量 $(p_1, q_1, 0)$ 水平流动,意味着从点 $(x_1 - p_1, y_1 - q_1, z_1)$ 的方向流来。出水也是水平的,沿向量 $(p_2, q_2, 0)$ 方向,意味着流向点 $(x_2 + p_2, y_2 + q_2, z_2)$ 的方向。

这些向量的长度并不重要;只有它们的方向和朝向很重要。朝向是指水流动的方向,即在进水口处指向弯头,在出水口处背离弯头。

输出格式

输出应包含 $t$ 行。在第 $i$ 行中,你应该提供完成该订单所需的最少弯头数量,如果订单不可行,则输出单词 NIE

样例

输入 1

2
-1 -1 3
1 1
2 2 3
2 2
5 5 1
3 0
7 6 -2
1 -2

输出 1

4
3

说明

在第一个样例中,最优解是使用四个弯头,例如依次在点 $(-1, -1, 3), (-2, 0, 3), (1, 3, 3), (2, 2, 3)$ 处放置:

一个低效的解法是使用六个弯头,分别在点 $(-1, -1, 3), (-2, 0, 3), (-1, 1, 4), (1, -1, 4), (3, 1, 4), (2, 2, 3)$ 处放置:

在第二个样例中,我们可以使用三个弯头,分别在点 $(5, 5, 1), (5, 5, -2), (7, 6, -2)$ 处放置:

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.