#P16681. [Ctu2016]Aerial Archeology
[Ctu2016]Aerial Archeology
题目描述
Andrew 暑期在一个航空考古团队中工作。该团队因使用核成像光谱技术研究地下史前文明遗迹而闻名。
今天,Andrew 的任务是为一架直升机规划航线。直升机会携带光谱仪飞越附近低地中的考古区域。
光谱仪是一种非常灵敏而脆弱的设备。为了尽量降低测量噪声,携带它的直升机必须保持恒定速度,并沿一条完全笔直的航线飞行。
在低地的地表之下,存在多处史前聚落。人们已经使用其他技术确定了这些聚落的位置和边界,并将所有边界绘制在 Andrew 手中的地图上。
这次飞行的目标是飞越尽可能多的聚落,并测量这些聚落内部及其周围的土壤成分。
因此,Andrew 需要在地图上画出一条直线,使这条直线穿过尽可能多的聚落。
聚落的形状十分复杂,彼此之间还可能以杂乱的方式重叠,所以最佳直线并不容易确定。
输入格式
输入包含多组测试数据,直到文件结束。
每组测试数据描述地图上各个聚落的形状和位置。
每个聚落由一个简单多边形表示,即:
- 多边形边界不会自交;
- 任意两条不相邻的边不会接触或相交。
不同聚落对应的多边形可以互相重叠。
每组测试数据的第一行包含一个正整数 ,表示地图上的多边形数量。
接下来依次给出 个多边形。
每个多边形的描述为:
- 第一行包含一个整数 (),表示顶点数量;
- 接下来 行,每行包含两个整数 ,表示一个顶点的坐标。
顶点按照沿多边形边界的顺时针顺序给出。
所有坐标的绝对值不超过:
一组测试数据中,所有多边形的顶点总数不超过:
输出格式
对于每组测试数据,输出一行一个整数 ,表示一条直线最多能够穿过多少个多边形。
只有直线与多边形内部发生相交时,才认为直线穿过该多边形。
如果直线只是接触多边形边界,而没有进入其内部,则不计入答案。
样例
输入
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