P13217 [GCJ 2015 #1A] Logging
题目描述
某片森林中有 $N$ 棵树,每棵树上都住着一只松鼠。
森林的**边界**是指包含所有树的最小面积凸多边形,就像用一根巨大的橡皮筋把整个森林包裹起来一样。
形式化地说,每棵树在二维平面上是一个唯一坐标为 $(X_i, Y_i)$ 的点,边界就是这些点的凸包。
有些树**在森林的边界上**,也就是说它们位于凸多边形的边或顶点上。松鼠们想知道它们的树距离成为森林边界上的树还有多远。
每次,一只松鼠会从它的树上下来,观察整个森林,并确定至少需要砍掉多少棵树,才能让它自己的树处于森林的边界上。然后它会把这个数字记在一根木头上。
请你求出所有松鼠记下的数字列表。
输入格式
输入的第一行是测试用例的数量 $T$。接下来有 $T$ 组测试数据;每组测试数据第一行为一个整数 $N$,表示树的数量,接下来的 $N$ 行,每行包含两个用空格分隔的整数 $X_i$ 和 $Y_i$,表示每棵树的坐标。任意两棵树的坐标都不相同。
输出格式
对于每组测试数据,输出一行 "Case #$x$:",接下来输出 $N$ 行,每行一个整数,第 $i$ 行表示住在第 $i$ 棵树上的松鼠需要砍掉多少棵树,才能让它的树处于边界上。
说明/提示
**样例解释**
在第一个样例中,有四棵树形成一个正方形,第五棵树在正方形内部。前四棵树已经在边界上,所以这些松鼠都写下 $0$。第五棵树需要砍掉一棵树才能在边界上,所以第五只松鼠写下 $1$。
**数据范围**
- $-10^6 \leq X_i, Y_i \leq 10^6$。
**小数据范围**
- 时间限制:5 秒。
- $1 \leq T \leq 100$。
- $1 \leq N \leq 15$。
**大数据范围**
- 时间限制:20 秒。
- $1 \leq T \leq 14$。
- $1 \leq N \leq 3000$。
由 ChatGPT 4.1 翻译