QOJ.ac

QOJ

Limite de temps : 0.5 s Limite de mémoire : 64 MB Points totaux : 100

#1485. 多边形三角剖分的三角形计数序列

Statistiques

多边形的三角剖分(Triangulation)是指一组连接多边形顶点的线段,这些线段将多边形分割成若干个三角形。这些线段必须位于多边形内部,且除了在多边形的顶点处外,不能相互交叉。例如:

在上述示例中,粗线表示多边形的轮廓,细线表示三角剖分。对于一个具有 $n$ 个顶点的多边形,任何一种三角剖分都会产生 $(n-2)$ 个三角形。

三角剖分的“三角形计数序列”(triangle count sequence)是通过从某个顶点开始,沿多边形周长绕行,并记录每个顶点所关联的三角形数量而得到的。在上述示例中,从顶部(左侧)顶点开始的三角形计数序列为:

A: $1 \quad 3 \quad 1 \quad 3 \quad 1 \quad 3$

B: $2 \quad 2 \quad 1 \quad 4 \quad 1 \quad 2$

C: $1 \quad 2 \quad 3 \quad 2 \quad 1 \quad 6 \quad 1 \quad 2 \quad 3 \quad 2 \quad 1 \quad 6$

编写一个程序,输入一个包含 $N$ 个正整数的序列,判断该序列是否为某个 $N$ 顶点多边形的三角形计数序列。如果是,请按字典序输出该三角剖分中的所有三角形。

输入格式

输入的第一行包含一个整数 $P$ ($1 \le P \le 1000$),表示随后数据组的数量。每组数据应独立处理。

每组数据由单行输入组成。它包含数据组编号 $K$,后跟数字 $N$ ($4 \le N \le 20$),再后跟序列中的 $N$ 个整数,所有数字均以空格分隔。

输出格式

对于每组数据,输出可能包含多行。如果输入序列不是 $N$ 顶点多边形的三角形计数序列,则输出行包含数据组编号 $K$,后跟一个空格和字母 $N$。如果输入序列 $N$ 顶点多边形的三角形计数序列,则第一行包含数据组编号 $K$,后跟一个空格和字母 $Y$。接下来的 $(N-2)$ 行,每行包含一个三角形的顶点索引,每个三角形一行,顶点索引按升序排列。这些三角形应按字典序排序,即如果三角形 $(k, l, m)$ 的顶点索引满足 $k < r$ 或者 ($k == r$ 且 $l < s$) 或者 ($k == r$ 且 $l == s$ 且 $m < t$),则三角形 $(k, l, m)$ 排在三角形 $(r, s, t)$ 之前。

样例

样例输入 1

4
1 6 1 3 1 3 1 3
2 6 1 3 2 2 1 3
3 12 1 2 3 2 1 6 1 2 3 2 1 6
4 20 1 2 3 2 1 6 1 2 3 2 1 6 1 3 2 2 1 3 1 2

样例输出 1

1 Y
1 2 6
2 3 4
2 4 6
4 5 6
2 N
3 Y
1 2 12
2 3 12
3 4 6
3 6 12
4 5 6
6 7 8
6 8 9
6 9 12
9 10 12
10 11 12
4 N

(说明:每个数据组输出的第一行已加粗,以便于阅读。)

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.