CF1510F Fiber Shape

题目描述

设想有一个板子,上面钉有 $n$ 个钉子,第 $i$ 个钉子的位置为 $(x_i, y_i)$。为简化问题,假设所有钉子都位于一个凸多边形的顶点上。 现在,取一根长度为 $l$ 的不可伸缩的绳子,将其绕在所有钉子上。用一支铅笔插入绳圈内,沿着钉子周围拉紧绳子并画出一条曲线。下图展示了用绳子绕住钉子并被铅笔(点 $P$)拉紧的示例。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1510F/3b434456ce86779edbd75c1c31032e6011c62ac7.png) 你的任务是求出这条曲线所包围的区域面积。更正式地,对于给定的凸多边形 $S$ 和长度 $l$,我们定义“纤维形状” $F(S, l)$ 为所有点 $t$ 的集合,使得 $\operatorname{Conv}(S \cup \{t\})$ 的周长不超过 $l$。请计算 $F(S, l)$ 的面积。

输入格式

第一行包含两个整数 $n$ 和 $l$($3 \le n \le 10^4$;$1 \le l \le 8 \cdot 10^5$),分别表示多边形 $S$ 的顶点数和绳子的长度。接下来的 $n$ 行,每行包含两个整数 $x_i$ 和 $y_i$($-10^5 \le x_i, y_i \le 10^5$),表示多边形顶点的坐标,按逆时针顺序给出。多边形的所有内角都严格小于 $\pi$。绳子的长度 $l$ 至少比多边形的周长大 $10^{-3}$。

输出格式

输出一个浮点数,表示纤维形状 $F(S, l)$ 的面积。你的答案若与标准答案的绝对误差或相对误差不超过 $10^{-6}$,则视为正确。

说明/提示

下图展示了样例测试的示意图。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1510F/73efb05d151b205642c75f0c21efa36e2790cfd3.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1510F/3d7b56874f36b0db8d6135c9d751060f7ad68412.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1510F/e25400dd84baf171efc8e3b94be6a87e03a7df61.png) 由 ChatGPT 4.1 翻译