QOJ.ac

QOJ

حد الوقت: 10.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 قابلة للهجوم ✓

#6991. 滚动多边形

الإحصائيات

Bahiyyah 有一个顶点为 $P_0, P_1, \dots, P_{n-1}$ 的凸多边形,顶点按逆时针顺序排列。下标连续的两个顶点相邻,此外 $P_0$ 和 $P_{n-1}$ 也相邻。她还在多边形内部(包括边界上)指定了一个点 $Q$。

现在,Bahiyyah 决定让这个多边形沿一条直线滚动,并计算点 $Q$ 的轨迹(或路径)长度。

为了明确起见,我们设 $P_n = P_0, P_{n+1} = P_1$,并假设初始时 $P_0$ 和 $P_1$ 之间的边位于直线上。当 $P_{i-1}$ 和 $P_i$ 之间的边位于直线上时,Bahiyyah 将多边形绕顶点 $P_i$ 向前旋转,直到下一条边(即 $P_i$ 和 $P_{i+1}$ 之间的边)接触到直线。当 $P_n$ 和 $P_{n+1}$ 之间的边(即 $P_0$ 和 $P_1$ 之间的边)再次接触到直线时,她将停止滚动。

输入格式

输入包含多个测试用例,第一行是一个正整数 $T$,表示测试用例的数量,最多为 $50$。

对于每个测试用例,第一行包含一个整数 $n$ ($3 \le n \le 50$),表示给定凸多边形的顶点数。接下来的 $n$ 行按逆时针顺序描述多边形的顶点。其中第 $i$ 行包含两个整数 $x_{i-1}$ 和 $y_{i-1}$,即点 $P_{i-1}$ 的坐标。最后一行包含两个整数 $x_Q$ 和 $y_Q$,即点 $Q$ 的坐标。

保证所有坐标都在 $-10^3$ 到 $10^3$ 的范围内,且点 $Q$ 位于多边形内部或其边界上。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是从 1 开始的测试用例编号,$y$ 是点 $Q$ 的轨迹长度,保留 3 位小数。我们保证精确答案小数点后第 4 位不会是 4 或 5。

样例

输入 1

4
4
0 0
2 0
2 2
0 2
1 1
3
0 0
2 1
1 2
1 1
5
0 0
1 0
2 2
1 3
-1 2
0 0
6
0 0
3 0
4 1
2 2
1 2
-1 1
1 0

输出 1

Case #1: 8.886
Case #2: 7.318
Case #3: 12.102
Case #4: 14.537

说明

下图展示了第一个样例测试用例中点 $Q$ 的轨迹。

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.