QOJ.ac

QOJ

時間限制: 2.0 s 記憶體限制: 256 MB 總分: 100

#17838. 反腰

统计

杰出的西伯利亚科学家因其题为《腰围与反腰围》("Waist and Antiwaist")的研究荣获了搞笑诺贝尔解剖学奖。正如突破性科学成就经常发生的那样,这一新想法开始渗透到其他科学和技术领域。事实证明,反腰围的概念在工程中非常有用:它能够用来寻找结构中最耐用的部分。然而,存在一个问题:工程师们目前还没有一个程序来寻找三维实体中的反腰围。

让我们考虑一个三维实体。我们可以用任意水平面 $z = \text{const}$ 对该实体进行平面截取。反腰围(antiwaist)是指截面面积最大的水平截面。

三维实体是三维空间中的一个闭合正则点集。它不能包含无限薄的元素。一个实体由其边界定义,边界以三角剖分的形式给出。

三角剖分以索引格式提供:包含一个顶点数组和一个三角形数组。所有顶点都具有整数坐标。所有顶点互不相同。每个三角形由其顶点定义:给出它们在全局顶点数组中的索引。一个三角形的三个索引互不相同。每个三角形都具有非零的表面积。从实体外部看时,三角形的顶点索引按逆时针顺序排列。

由于三角剖分包围了一个三维实体,因此它没有自交和自接触。如果两个三角形有两个公共顶点,它们可以共享一条线段;如果有一个公共顶点,它们可以共享一个点。它们不能有任何其他公共点。不存在非流形(non-manifold)的边或顶点,即:每条边恰好属于两个三角形;包含某个顶点的三角形集合通过它们的边连接成一个单一的环。实体可以是未连通的,也可以包含空腔。

输入格式

输入的第一行包含两个整数:$V$ — 顶点数量,$T$ — 三角形数量($4 \le V, T \le 200\,000$)。

接下来的 $V$ 行描述顶点。每行包含三个整数,分别表示顶点的 $x$、$y$ 和 $z$ 坐标。剩下的 $T$ 行描述三角形。每行包含三个整数,表示该三角形顶点的索引。顶点按描述的顺序从 $0$ 开始编号。

坐标的绝对值不超过 $500\,000$。使用右手坐标系。

输出格式

在输出的第一行中输出找到的反腰围。输出两个实数:截面的 $z$ 坐标和该截面的面积。如果存在多个具有最大面积的水平截面,输出其中任意一个的 $z$ 坐标。

建议以最大精度输出实数。输出截面面积的绝对或相对误差不得超过 $10^{-8}$。

样例

最后两个样例的输入数据未在下方完整显示。它们可以在样例存档中找到,该存档可在题目旁下载。

输入样例 1

6 8
1 0 0
-1 0 0
0 1 0
0 -1 0
0 0 1
0 0 -1
2 0 5
1 4 2
0 2 4
5 0 3
1 3 4
3 1 5
2 5 1
4 3 0

输出样例 1

0 2

输入样例 2

6 8
0 0 0
2 0 0
0 1 0
0 0 1
1 0 1
0 2 1
1 0 2
4 5 3
0 1 3
3 1 4
3 5 0
5 2 0
4 1 5
5 1 2

输出样例 2

0.5 1.5

输入样例 3

32 60
...
The complete data are in the samples archive!

输出样例 3

0.7913756716346761 5

输入样例 4

896 1788
...
The complete data are in the samples archive!

输出样例 4

-3318.6080203949518 4003775.6378878844

说明

在第一个样例中,该实体是一个以原点为中心的正八面体,其所有顶点都位于坐标轴上。最大截面面积在中间截面 $z = 0$ 处取得,该截面是一个边长为 $\sqrt{2}$ 的正方形。在第二个样例中,最大截面同样在 $z$ 的中间位置取得。在第三个样例中,有一个由六个立方体突起组成的十字形。最大面积的截面在 $0 \le z \le 1$ 处取得,是一个平面十字形。在最后一个样例中,该实体是一个人体。你可以看到人类反腰围的通常位置。

下面提供了样例测试的插图。

样例测试插图

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.