#P9616. [CERC2019] Screamers in the Storm

[CERC2019] Screamers in the Storm

题目背景

题目译自 CERC 2019Screamers in the Storm

翻译有待改进。

题目描述

你可能不知道,你每天在一个城市看到的“普通”城市鸽子的官方名称实际上是“岩鸽”。岩鸽 Rocky Dave 爱上了 Columba Livia,这是一只年轻的雌性岩鸽,她对岩石、鸽子以及与这类事物相关的一切都有着浓厚的兴趣。完全巧合的是,在一个阳光明媚的秋日下午,我们在城市郊区发现他们坐在同一栋楼的屋顶上。

为了展示他自信的运动步态,Rocky Dave 决定不飞越屋顶去追求他心爱的对象,而是走向她。屋顶不是现代的平屋顶,而是由斜坡构成的古典屋顶。由于该建筑由更多较小的建筑连接在一起,其平面图有点复杂。因此,Dave 打算向Columba Livia 移动的“直线”只有在从上方观察时才显得笔直。Rocky Dave 可能不得不爬上去,越过山脊,从另一边爬到屋顶山谷,然后再爬上去,以此类推。

我们知道这座建筑的确切平面图,屋顶上斜坡的角度(所有角度都是一样的),以及我们的主人公和女主人公在屋顶上的原始位置。根据这些数据,计算 Rocky Dave 旅程的确切长度,前提是 Columba Livia 在 Rocky Dave 到达之前没有离开她的位置。

如果这条路离开了建筑边界,Dave 的计划是,每当他在屋顶边缘遇到雨水沟时,他都会以相同的高度朝着 Columba Livia 的方向笔直飞行,直到他到达建筑另一侧的雨水沟,在那里他将进一步步行继续他的旅程。

为了使情况变得清楚,我们向您展示了屋顶的几何模型。设 ZZxyx-y 平面上的一个简单多边形。简单多边形是一个多边形,其边界是一条闭合的曲线,它本身不接触或相交。一个可接受的金字塔是一个金字塔,其底部是 xyx-y 平面中的轴平行正方形,其顶点(顶部顶点)位于底部中心的正上方。棱锥体的高度正好是其基边长度的一半。此外,一个可接受的金字塔的底部没有一部分位于 ZZ 之外。注意,一个可以接受的金字塔可能正式地具有零底部边长和零高度,然后它由一个节点组成,该节点也是它的顶点。

xyx-y 平面中或上方的点 XXZZ 的顶点,当且仅当它是可接受金字塔的顶点,并且 XX 正上方没有点是可接受棱锥的顶点。

输入格式

第一行包含五个整数。第一个整数 N (4N400)N\ (4\le N\le 400),是由建筑平面图的边缘在 xyx-y 平面上形成的多边形的角点数量。接下来两个整数是 Rocky Dave 的 xxyy 坐标,最后两个整数是 Columba Livia 的 xx 坐标和 yy 坐标。

接下来 NN 行,每行包含多边形一个角点的 xxyy 坐标。这些点按逆时针顺序列出。建筑物的每一边都与其中一条轴线平行。

两只鸽子都不在给定的多边形之外。所有输入坐标都是绝对值最多为 10510^5 的整数。

输出格式

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

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

4.828427124746

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

6.292528739884

提示

样例解释