P5792 [CTSC2005] 孤独的牧羊女

题目描述

在瑞典的达拉纳洲有一座高山。山上有一个小屋,里面住着一位牧羊女。每天清晨,隔壁的山头会传来一阵悠扬的长笛声,而牧羊女则会站在屋里用自己的歌声回应。 小屋的俯视图是一个有 $n$ 个顶点的简单多边形,每一面墙可以反射声音,但是由于不可避免的能量损失,最多只能反射 $k$ 次($k=0$ 表示不能反射声音)。墙面非常光滑,因此声音的反射遵循反射角等于入射角,如图 $1$。墙角不能反射声音,而每面墙的其他部分——即使离墙角很近——都可以反射声音。 ![](https://cdn.luogu.com.cn/upload/image_hosting/wcjsrg80.png) 突然有一天,牧羊女问自己:在小屋的哪些地方能听到她的歌声?假设所有听众都在屋里靠墙而坐,那么歌声能到达的墙一共有多长? 图 $2$ 的四幅示意图分别画出了初始情况和声音经过 $0$、$1$、$2$ 次反射后到达的区域。灰色部分表示能听到歌声的部分,黑点表示牧羊女的位置。本题所求即灰色部分在多边形边界上的**总长度**。 ![](https://cdn.luogu.com.cn/upload/image_hosting/yuwzz7vj.png)

输入格式

第一行包含 $4$ 个整数 $n,k,x,y$ 分别表示小屋的墙角数、最多反射的次数以及牧羊女的坐标(牧羊女所在位置保证在屋内且至少离墙 $1$ 个单位)。以下 $n$ 行每行两个整数 $x, y$,表示第 $i$ 个墙角的坐标。墙角按照**顺时针或逆时针**排列。

输出格式

输出文件仅包含一个实数 $L$,表示能听到歌声的墙的总长度。保留两位小数。

说明/提示

#### 评分方法 选手输出和参考输出差的绝对值不大于 $0.02$ 时该测试点满分,相差超过 $0.02$ 但不超过 $1$ 时该测试点得 $50\%$ 的分数。在样例$1$中,答案为 $469.84$ 和 $469.88$ 都能拿满分,$468.86$ 和 $470.86$ 都能拿 $50\%$ 的分数。 #### 约定 $3\leq n\leq 50$,$0\leq k\leq 5$,所有坐标为绝对值不超过 $1000$ 的整数。 $50\%$ 的数据满足 $k≤1$。