QOJ.ac

QOJ

時間限制: 60 s 記憶體限制: 1024 MB 總分: 43

#11470. 折餐巾

统计

Chalk 一直在世界各地旅行,并与朋友们在各个最酷的地方拍照留念。最近,他去了欧洲,在那里研究了餐巾折叠的历史。从那时起,Chalk 就开始收集各种各样的餐巾,以练习餐巾折叠的艺术。

Chalk 的餐巾可以定义为简单多边形。简单多边形是指除了相邻边在其公共顶点处相交外,没有任何边相交的多边形。多边形的每个顶点恰好位于两条边上。

Chalk 通过在餐巾上绘制折叠图案来折叠餐巾。折叠图案是一组画在餐巾上的 $K-1$ 条线段。每条线段连接定义餐巾的多边形边界上的两个有理坐标点,并完全包含在多边形内。折叠图案中的任意两条线段不得接触或重叠,除非它们在公共端点处。由 $K-1$ 条线段组成的折叠图案将餐巾分割成 $K$ 个多边形区域。如果两个点之间存在某条连续线(不一定是直线),且该线不与多边形的任何边或折叠图案中的任何线段相交(即使在端点处也不相交),则称这两个点位于同一区域。

Chalk 只对整齐的折叠图案感兴趣。如果任何两个相邻于同一折叠线段 $F$ 的区域关于 $F$ 对称,则称该折叠图案是整齐的。这意味着沿着该线段折叠餐巾将使这两个区域完美重合。

下图展示了一个包含 $K=8$ 个区域的整齐折叠图案。

Chalk 已经成功地使用整齐的折叠图案折叠了他的餐巾收藏。但他收藏中的一些餐巾,他一直没能找到整齐的折叠图案。

对于这些餐巾中的每一条,Chalk 需要你的帮助来找到一个包含 $K$ 个区域的整齐折叠图案,或者确定不存在这样的整齐折叠图案。

输入格式

输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例以一行开始,包含两个整数 $N$ 和 $K$:定义 Chalk 餐巾的多边形的点数,以及通过包含 $K-1$ 条线段的整齐折叠图案将餐巾分割成的区域数。

定义餐巾的多边形表示为 $N$ 个顶点的列表,这些顶点是沿多边形周长顺时针方向遍历时遇到的,第一个顶点是任意选择的。接下来的 $N$ 行代表该列表。其中第 $i$ 行包含两个整数 $X_i$ 和 $Y_i$,表示第 $i$ 个点位于二维空间中的 $(X_i, Y_i)$。

输出格式

对于每个测试用例,输出一行包含 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),如果可以制作出包含 $K$ 个区域的整齐折叠图案,则 $y$ 为 POSSIBLE,否则为 IMPOSSIBLE

如果可以制作出包含 $K$ 个区域的整齐折叠图案,则再输出 $K-1$ 行,列出包含 $K$ 个区域的整齐折叠图案的线段,顺序不限。每行应代表一个不同的线段,格式为 $A_x\ A_y\ B_x\ B_y$,其中 $(A_x, A_y)$ 和 $(B_x, B_y)$ 是线段的两个端点,顺序不限。$A_x, A_y, B_x$ 和 $B_y$ 中的每一个都应以 $N/D$ 的形式表示,其中 $N$ 和 $D$ 是正整数(书写时无前导零),且互质,代表有理数 $N/D$。$N$ 和 $/$ 之间,以及 $/$ 和 $D$ 之间不得有空格。

数据范围

时间限制:每个测试集 60 秒。 内存限制:1GB。 $1 \le T \le 100$。 $3 \le N \le 200$。 $1 \le X_i \le 1000$,对于所有 $i$。 $1 \le Y_i \le 1000$,对于所有 $i$。 $N$ 个点按顺时针顺序给出。 多边形的任意两条相邻边不共线。 该多边形是一个面积严格为正的简单多边形。 除了相邻边在其公共端点处相交外,没有任何两条边相交。

样例

输入 1

4
4 2
1 1
1 2
2 2
2 1
3 2
1 1
1 2
2 1
8 2
1 3
3 5
5 5
4 4
7 3
5 1
4 2
3 1
8 2
1 3
3 5
4 4
5 5
7 3
5 1
4 2
3 1

输出 1

Case #1: POSSIBLE
1/1 2/1 2/1 1/1
Case #2: POSSIBLE
1/1 1/1 3/2 3/2
Case #3: IMPOSSIBLE
Case #4: POSSIBLE
1/1 3/1 7/1 3/1

输入 2

1
10 8
4 1
3 1
2 2
2 3
1 3
1 4
2 4
3 3
3 2
4 2

输出 2

Case #1: POSSIBLE
3/1 1/1 4/1 2/1
3/1 1/1 3/1 2/1
2/1 2/1 3/1 2/1
2/1 2/1 3/1 3/1
2/1 3/1 3/1 3/1
2/1 3/1 2/1 4/1
1/1 3/1 2/1 4/1

说明

注:样例 2 对测试集 1 无效。只有样例 1 会在运行测试集 1 之前进行测试(与通常的样例测试方式相同)。此外,样例 2 不会在运行测试集 2 之前进行测试。

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.