#P14851. [ICPC 2022 Yokohama R] Traveling Salesperson in an Island
[ICPC 2022 Yokohama R] Traveling Salesperson in an Island
Description
你是岛上某个港口的销售员。你需要拜访岛上的所有港口,然后返回起始港口。因为你不会游泳且害怕大海,所以在旅途中必须停留在陆地上。
该岛被建模为二维平面上的一个多边形。该多边形是 简单的,即其顶点互不相同,且除相邻边在其公共顶点处相接外,没有两条边相交或相触。此外,没有两条相邻边共线。岛上的每个港口被建模为多边形边界上的一个点。你的路线被建模为一条不超出多边形范围的闭合曲线。
为了准备这次旅程,你想计算拜访所有港口并返回起始港口的最短路线长度。
Input Format
输入由单个测试用例组成,格式如下。
$$\begin{aligned} &n \ m \\ &x_1 \ y_1 \\ &\vdots \\ &x_n \ y_n \\ &x'_1 \ y'_1 \\ &\vdots \\ &x'_m \ y'_m \end{aligned}$$第一行包含两个整数 和 ,满足 和 。其中 是建模岛屿的多边形的顶点数, 是岛上的港口数量。接下来的 行,每行包含两个整数 和 ,是多边形第 个顶点的坐标,其中 且 。多边形的顶点按逆时针顺序给出。接下来的 行,每行包含两个整数 和 ,是第 个港口的坐标。路线从 开始并结束。保证所有港口都位于多边形的边界上且互不相同。
Output Format
在一行中输出拜访所有港口并返回起始港口的最短路线长度。输出的相对误差必须在 以内。
4 4
0 0
2 0
2 2
0 2
1 0
1 2
2 1
0 1
5.656854249492381
8 2
0 0
4 0
4 4
0 4
0 3
3 3
3 1
0 1
0 0
0 4
16.64911064067352
Hint
这些样例如下图所示。最短路线用粗线表示。灰色多边形代表岛屿。小圆盘代表岛上的港口。注意,路线不一定非得是简单的,即路线可以自相交或重叠,如第二个样例中,两个港口之间的同一条路径被使用了两次。
:::align{center}

图 J.1. 样例 1
图 J.2. 样例 2 :::
京公网安备 11011102002149号