P16859 [GKS 2021 #F] Star Trappers

题目描述

John 和 Ada 坐在一个小山丘的草地上。此刻是午夜,天空中满是星星。从遥远的地方看,天空就像一个二维平面,星星就像是平面上的点。Ada 非常喜欢蓝色的星星,她突然注意到一颗蓝色的星星,而天空中其余所有的星星都是白色的。她非常喜欢这颗蓝色的星星,以至于想要将它困住。于是她向 John 求助。 Ada 会告诉 John 蓝色星星的位置,而 John 必须将它困住。要困住它,John 需要用他的巨剑在天空中画出一个多边形,使得蓝色星星严格位于多边形内部(不在多边形边界上),并且该多边形的周长尽可能小。多边形的顶点必须是白色的星星。 尽管 John 非常厉害,他还是需要你的帮助。给定白星和蓝星的位置,你需要判断 John 能否困住蓝星,如果能,则找出他所用多边形的最小周长。

输入格式

输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。 对于每个测试用例,第一行包含一个整数 $N$,表示天空中白星的数量。 接下来的 $N$ 行,每行包含两个整数 $X_i$ 和 $Y_i$。第 $i$ 对整数表示第 $i$ 颗白星的 $x$ 和 $y$ 坐标。 在这 $N$ 行之后,还有一行,包含两个整数 $X_s$ 和 $Y_s$,表示蓝星的 $x$ 和 $y$ 坐标。

输出格式

对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是困住蓝星所用多边形的最小周长。如果 John 无法画出困住蓝星的多边形,则 $y$ 应为 `IMPOSSIBLE`。 如果 $y$ 与正确答案的绝对误差或相对误差在 $10^{-6}$ 以内,则认为正确。

说明/提示

在第一个测试用例中,只有两颗白星,因此无法画出任何多边形。 在第二个测试用例中,有三颗白星,因此只能画出一个多边形(一个三角形),如下图所示。结果发现,该三角形能够困住蓝星。该三角形的周长为 $5 + 5 + 5\sqrt{2} \approx 17.071068$。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/9r6fnai4.png) ::: ### 限制条件 内存限制:$1$ GB。 $1 \le T \le 100$。 对于所有 $i$,$0 \le X_i, Y_i \le 10^6$。 $0 \le X_s, Y_s \le 10^6$。 没有两颗星星(包括蓝星)位置相同。 **测试集 1** $1 \le N \le 10$。 **测试集 2** $1 \le N \le 45$。 **测试集 3** 最多 $10$ 个测试用例满足: $1 \le N \le 300$。 其余测试用例满足: $1 \le N \le 60$。 翻译由 DeepSeek V4 Pro 完成