QOJ.ac

QOJ

Límite de tiempo: 2.0 s Límite de memoria: 1024 MB Puntuación total: 100

#14704. Screamers in the Storm

Estadísticas

你可能不知道,你在城市里每天见到的“普通”市鸽,其官方名称实际上是“原鸽”(rock pigeon 或 rock dove)。原鸽 Rocky Dave 爱上了 Columba Livia,一只年轻的雌性原鸽,她对岩石、鸽子以及与此类事物相关的一切都深感兴趣。纯属巧合的是,在一个阳光明媚的秋日午后,我们发现它们正停在城市郊区同一栋建筑的屋顶上。

为了展示自己自信而矫健的步伐,Rocky Dave 决定不直接飞过屋顶去找他的心上人,而是选择步行走向她。这个屋顶不是现代的平屋顶,而是由坡面组成的传统屋顶。由于该建筑是由多个较小的建筑连接而成的,其平面图有些复杂。因此,Dave 打算走向 Columba Livia 的“直线”路径,只有从正上方俯视时才显得是直的。Rocky Dave 可能需要向上爬、越过屋脊、从另一侧下行到屋谷,然后再向上爬,以此类推。

我们知道该建筑的精确平面图、屋顶坡面的角度(所有角度均相同),以及我们男女主角在屋顶上的初始位置。给出这些数据,请计算在 Columba Livia 在 Rocky Dave 到达前不离开原位的前提下,Rocky Dave 旅程的精确长度。

如果路径离开了建筑物的边界,Dave 的计划是:每当他遇到屋顶边缘的雨水沟时,他将以相同的高度沿着指向 Columba Livia 的方向直线飞行,直到到达建筑物另一侧的雨水沟,然后在那里继续步行前进。

为了使情况明确,我们为你提供屋顶的几何模型。设 $Z$ 是 $x$-$y$ 平面上的一个简单多边形。简单多边形是指边界为一条不自交且不自碰的闭合曲线的多边形。一个合格的金字塔是指满足以下条件的金字塔:其底面是 $x$-$y$ 平面上平行于坐标轴的正方形,且其顶点(最顶端顶点)位于底面中心的直上方。金字塔的高度恰好是其底面边长的一半。此外,合格金字塔底面的任何部分都不能位于 $Z$ 的外部。注意,合格的金字塔在形式上可以具有零底面边长和零高度,此时它仅由一个单点组成,该点也是其顶点。

对于 $x$-$y$ 平面内或其上方的点 $X$,当且仅当 $X$ 是某个合格金字塔的顶点,且 $X$ 的正上方没有任何点是合格金字塔的顶点时,点 $X$ 才是 $Z$ 的屋顶上的一个点。

输入格式

第一行包含五个整数。第一个整数 $N$ ($4 \le N \le 400$) 是由建筑物平面图边缘在 $x$-$y$ 平面内形成的多边形的顶点数。接下来的两个整数是 Rocky Dave 的 $x$ 和 $y$ 坐标,最后两个整数是 Columba Livia 的 $x$ 和 $y$ 坐标。

接下来的 $N$ 行,每行包含多边形一个顶点的 $x$ 和 $y$ 坐标。顶点按逆时针顺序给出。建筑物的每条边都平行于其中一个坐标轴。

两只鸽子都不在给定的多边形外部。所有输入坐标均为绝对值不超过 $10^5$ 的整数。

输出格式

输出 Rocky Dave 旅程的长度。答案的绝对或相对误差必须小于 $10^{-7}$。

样例

输入样例 1

4 3 0 3 4
0 0
4 0
4 4
0 4

输出样例 1

4.828427124746

输入样例 2

6 1 1 5 5
0 0
2 0
2 4
6 4
6 6
0 6

输出样例 2

6.292528739884

图 1:样例 1 和样例 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.