QOJ.ac

QOJ

时间限制: 20 s 内存限制: 1024 MB 总分: 100

#4369. 多边形拼图

统计

在去年的马拉喀什 ACM ICPC 全球总决赛期间,一位评委买了一个漂亮的木制拼图,上面描绘着骆驼和棕榈树(见图 H.1)。与通常通过切割现有矩形图片制作的传统拼图不同,这个拼图的所有碎片都是单独切割和上色的。因此,相邻的碎片通常不共享共同的图片元素或颜色。此外,拼图本身是不规则形状的。鉴于这些特性,单个碎片的形状通常是判断每个碎片应放置位置的唯一依据。

图 H.1:评委的木制拼图。

自去年以来,这位评委一直想知道是否可以编写一个程序来解决这个拼图。此类程序的一个重要部分是评估两个拼图碎片如何“匹配”的方法。匹配度越高,这些碎片在拼图中相邻的可能性就越大。

碎片被建模为简单多边形。你的任务是找到两个给定多边形的放置方式,使得它们的内部不重叠,但多边形的边界相互接触,且公共边界的长度最大化。对于这种放置,多边形可以平移和旋转,但不能翻转或缩放。图 H.2 展示了样例输入 1 的最优放置方式。

输入格式

输入包含两个多边形的描述,一个接一个。每个多边形描述以一行包含一个整数 $n$ ($3 \le n \le 50$) 开始,表示多边形的顶点数。随后是 $n$ 行,每行包含多边形顶点的两个整数坐标 $x, y$ ($|x|, |y| \le 100$)。每个多边形的顶点按顺时针顺序给出,且没有三个连续顶点共线。

输入数据经过选择,即使顶点移动距离不超过 $10^{-7}$,答案的变化也不会超过 $10^{-4}$。

图 H.2:样例输入 1 及其最优放置方式。

输出格式

显示这两个多边形在最优放置时公共边界的最大可能长度。你的答案应具有小于 $10^{-3}$ 的绝对或相对误差。

样例

样例输入 1

8
0 0
0 10
10 10
15 15
24 6
24 10
30 10
30 0
7
-5 0
-5 10
10 10
15 5
20 10
35 10
35 0

样例输出 1

30.142135624

样例输入 2

3
1 0
0 30
40 0
3
1 0
0 30
40 0

样例输出 2

50

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.