#P16681. [Ctu2016]Aerial Archeology

[Ctu2016]Aerial Archeology

题目描述

Andrew 暑期在一个航空考古团队中工作。该团队因使用核成像光谱技术研究地下史前文明遗迹而闻名。

今天,Andrew 的任务是为一架直升机规划航线。直升机会携带光谱仪飞越附近低地中的考古区域。

光谱仪是一种非常灵敏而脆弱的设备。为了尽量降低测量噪声,携带它的直升机必须保持恒定速度,并沿一条完全笔直的航线飞行。

在低地的地表之下,存在多处史前聚落。人们已经使用其他技术确定了这些聚落的位置和边界,并将所有边界绘制在 Andrew 手中的地图上。

这次飞行的目标是飞越尽可能多的聚落,并测量这些聚落内部及其周围的土壤成分。

因此,Andrew 需要在地图上画出一条直线,使这条直线穿过尽可能多的聚落。

聚落的形状十分复杂,彼此之间还可能以杂乱的方式重叠,所以最佳直线并不容易确定。

输入格式

输入包含多组测试数据,直到文件结束。

每组测试数据描述地图上各个聚落的形状和位置。

每个聚落由一个简单多边形表示,即:

  • 多边形边界不会自交;
  • 任意两条不相邻的边不会接触或相交。

不同聚落对应的多边形可以互相重叠。

每组测试数据的第一行包含一个正整数 NN,表示地图上的多边形数量。

接下来依次给出 NN 个多边形。

每个多边形的描述为:

  • 第一行包含一个整数 MMM3M\ge3),表示顶点数量;
  • 接下来 MM 行,每行包含两个整数 x,yx,y,表示一个顶点的坐标。

顶点按照沿多边形边界的顺时针顺序给出。

所有坐标的绝对值不超过:

10000.10\,000.

一组测试数据中,所有多边形的顶点总数不超过:

1000.1000.

输出格式

对于每组测试数据,输出一行一个整数 PP,表示一条直线最多能够穿过多少个多边形。

只有直线与多边形内部发生相交时,才认为直线穿过该多边形。

如果直线只是接触多边形边界,而没有进入其内部,则不计入答案。

样例

输入

3
4
0 0
0 1
1 1
1 0
4
1 2
1 3
2 3
2 2
5
2 1
2 2
9 2
10 3
10 1

输出

2