QOJ.ac

QOJ

Limite de temps : 10 s - 20 s Limite de mémoire : 1024 MB Points totaux : 52

#5965. 伐木

Statistiques

一片森林中有 $N$ 棵树,每棵树上都住着一只松鼠。

森林的边界是包含所有树的面积最小的凸多边形,就像在森林外围拉了一根巨大的橡皮筋一样。

形式化地说,每棵树都是二维空间中坐标为 $(X_i, Y_i)$ 的一个点,且坐标互不相同。森林的边界即这些点的凸包。

有些树位于森林的边界上,这意味着它们位于多边形的边或顶点上。松鼠们想知道它们的树距离“位于森林边界上”还有多远。

每只松鼠依次从树上爬下来,观察森林,并确定为了让自己的树位于边界上,最少需要砍掉多少棵树。然后,它将这个数字写在木头上。

请确定写在木头上的数字列表。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例;每个测试用例的第一行是一个整数 $N$,表示树的数量,随后有 $N$ 行,每行包含两个空格分隔的整数 $X_i$ 和 $Y_i$,表示每棵树的坐标。没有两棵树的坐标相同。

输出格式

对于每个测试用例,输出一行 "Case #x:",后跟 $N$ 行,每行一个整数,其中第 $i$ 行包含住在第 $i$ 棵树上的松鼠需要砍掉的树的数量。

数据范围

内存限制:1 GB。

$-10^6 \le X_i, Y_i \le 10^6$。

小数据集(18 分)

时间限制:10 秒。

$1 \le T \le 100$。

$1 \le N \le 15$。

大数据集(34 分)

时间限制:20 秒。

$1 \le T \le 14$。

$1 \le N \le 3000$。

样例

输入 1

2
5
0 0
10 0
10 10
0 10
5 5
9
0 0
5 0
10 0
0 5
5 5
10 5
0 10
5 10
10 10

输出 1

Case #1:
0
0
0
0
1
Case #2:
0
0
0
0
3
0
0
0
0

说明

在第一个样例中,有四棵树构成一个正方形,第五棵树在正方形内部。由于前四棵树已经在边界上,这些树上的松鼠都写下 0。由于第五棵树需要砍掉一棵树才能位于边界上,第五只松鼠写下 1。

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.