#P16320. [ICPC 2023 Jinan R] 近似凸多边形

[ICPC 2023 Jinan R] 近似凸多边形

题目描述

这是一个关于凯文的故事,他是小青鱼的朋友。

凯文是国际凸多边形大赛(ICPC)的裁判长。他为比赛准备了一道几何题。然而,由于他对计算几何不熟悉,他无法为这道题生成正确的凸多边形作为测试数据。

为此凯文很沮丧。他的好朋友小青鱼如此安慰他:“虽然你生成的数据不是凸多边形,但你可以称它为近似凸多边形!”

给定一个由二维平面上的点组成的集合 SS(包含至少 33 个点),其中任意两点的坐标都不相同,且任意三个点都不共线。小青鱼称一个多边形 PP 为近似凸多边形,当且仅当:

  • 多边形 PP 是简单多边形,也就是说,多边形的顶点两两不同,且除了相邻边存在公共顶点外,不存在两条边有公共点。
  • 多边形的顶点属于 SS,且 SS 中所有点要么在多边形内部,要么在多边形的边界上。

U\mathbb{U} 表示所有近似凸多边形构成的集合。可以证明 U\mathbb{U} 是一个有限集合,且不是空集合。因此,存在一个多边形 RR 使得 R|R|U\mathbb{U} 的所有多边形中是最小的(R|R| 是多边形 RR 的顶点数量)。

凯文和小青鱼希望您能计算多边形 QUQ \in \mathbb{U} 的数量,满足 QR+1|Q| \le |R| + 1

输入格式

每个测试文件仅有一组测试数据。

第一行输入一个整数 nn3n2×1033 \le n \le 2 \times 10^3)表示集合 SS 中点的数量。

对于接下来 nn 行,第 ii 行输入两个整数 xix_iyiy_i106xi,yi106-10^6 \le x_i, y_i \le 10^6)表示集合 SS 中的一个点 (xi,yi)(x_i, y_i)

保证 SS 中任意两点的坐标都不相同,且任意三个点都不共线。

输出格式

输出一行一个整数表示多边形 QQ 的数量。

7
1 4
4 0
2 3
3 1
3 5
0 0
2 4
9
5
4 0
0 0
2 1
3 3
3 1
5
3
0 0
3 0
0 3
1

提示

对于第一组样例数据,R=4|R| = 4。所有多边形 QQ 如下所示。

:::align{center} :::

对于第二组样例数据,R=3|R| = 3。所有多边形 QQ 如下所示。

:::align{center} :::