#P17369. [ECNA 2023] Convex Hull Extension

[ECNA 2023] Convex Hull Extension

题目描述

Hugh Klidd 博士是一位几何专家,最近沉迷于研究凸包。回顾一下:对于 xx-yy 平面上的一个点集,凸包是包含所有这些点的最小凸多边形。(凸多边形具有这样的性质:任取多边形内部或边界上的两点,连接它们的线段都完全位于多边形内部或边界上。)

Klidd 博士刚刚求出了点集 SS 的凸包,记作 H(S)H(S),并且对结果十分满意:

  • 凸包有 n≥3n\ge 3 个顶点;
  • 每个顶点的坐标都是整数;
  • 凸包的任意三个顶点均不共线。

然而,Klidd 博士志向远大,他希望让这个凸包继续增长。具体来说,他正在寻找一个扩展点,即满足下列条件的点 p=(x,y)p=(x,y):

  1. xx 和 yy 都是整数;
  2. 令 S′=S∪{p}S'=S\cup\{p\},则 S′S' 的凸包 H(S′)H(S') 恰有 n+1n+1 个顶点;
  3. 这 n+1n+1 个顶点中任意三个均不共线。

换句话说,扩展点在保留凸包上述良好性质的同时,会使凸包的顶点数恰好增加 11。对于大多数凸包 H(S)H(S),Klidd 博士通常至少能找到一个扩展点,但他想知道一共有多少个扩展点可供选择。他猜想存在一种高效的计数方法;然而他从未上过算法课,只好向你求助。

:::align{center} :::

注:Klidd 博士此前恰好提出过四个公设,所以这是他的第五公设。

输入格式

第一行包含一个整数 nn,表示 Klidd 博士最初得到的凸包的顶点数,其中 3≤n≤503\le n\le 50。

接下来 nn 行,每行包含两个以空格分隔的整数 x,yx,y,表示一个顶点的坐标,其中 −1000≤x,y≤1000-1000\le x,y\le 1000。

这 nn 个点互不相同,任意三点不共线,并按逆时针顺序给出。

输出格式

如果给定凸包的扩展点有无限多个,输出 infinitely many;否则输出扩展点的数量。

5
0 2
-2 0
-1 -3
1 -3
2 1
23
4
-7 -7
7 -7
7 7
-7 7
infinitely many