您的位置:首页 > 其它

[JZOJ]3856. 【NOIP2014八校联考第3场第1试10.4】规避

2014-10-06 15:04 253 查看


Description

2014年7月17日,马来西亚航空MH17班机执飞阿姆斯特丹史基浦机场飞往吉隆坡国际机场航线时,在乌克兰靠近俄罗斯边界33,000英尺高空疑受到9K37山毛榉地对空导弹击落坠毁。事件发生后,汉莎航空、法国航空、土耳其航空、俄罗斯洲际航空、达美航空、英国航空、俄罗斯航空、印度航空、捷特航空和荷兰皇家航空开始禁止班机进入乌克兰东部或全境领空范围。美国航空公司的班机禁止在乌克兰境内飞行,同时UTair航空、意大利航空和维珍航空也宣布他们的班机将会重新规划航行的路线。英国交通部已经要求该国的班机不要进入乌克兰领空范围。中国民用航空局已要求国内航空公司所有飞越乌克兰的航班绕飞。

作为相关负责人,你需要根据实际情况规划航线规避不安全地区,包括战争区域、危险天气、火山灰和外星人入侵……等。每个不安全区域被标记为一个凸多边形,每个凸多边形相离,你需要规划一条从指定起点到指定终点的航线,要求航线不得进入不安全区域,输出它的最短长度。为了你的方便,起点和终点都是多边形的顶点。


Input

第一行一个整数N表示不安全区域的数目。

接下来共N组描述,分别对应每个区域,首先输入一个空行,接下来第一个数num表示该区域顶点数,接下来共num个整数对按逆时针方向描述每个顶点。

在描述起点终点前输入空行,然后两个整数S和T描述起点和终点。起点为之前读入的总第S个顶点,终点同理。


Output

一行共一个数表示最短长度,保留4位小数。


Sample Input

2

4

0 0

1 0

1 1

0 1

4

2 2

3 2

3 3

2 3

1 7


Sample Output

4.8284


Data Constraint

M表示顶点总数

对于10%的数据,N=1。

对于30%的数据,N<=2。

对于50%的数据,N<=10,M<=50。

对于100%的数据,N<=100,M<=300,-32768<=读入的坐标<=32767。

第一眼认为是计算几何,心里就想押后做。但其实这题和计算几何的关系不大,认真观察题目可以发现求的是一个点到另一个点的距离,这样可以
考虑最短路。然后就是建边的问题,一个凸多边形自身的边当然是图中的边,至于两个不同多边形的点是否可以连边就要看是否与原本多边形的边
有交叉,有的话这条边是不合法的,这个可以用叉积判跨立试验,特判一下特殊情况,然后上最短路的可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: