#P2701. Lapux the Floating Island

Lapux the Floating Island

题目描述

在副热带太平洋上有一个由众多岛屿组成的国家。其首都拉普克斯(LapuxLapux)是一个半径为R0R_0的圆形浮空岛,通过某种磁力魔法始终保持在固定高度。

每年夏至正午会举行一个短暂的庆典,此时太阳直射,拉普克斯会快速沿多边形路径在海面上移动,并在正下方投下阴影(注:多边形路径由若干直线段组成)。阴影会被拉普克斯周围的人工云环放大,这些云环用于某些未知的实用和娱乐功能。

由于前任对人民的承诺以及技术限制,拉普克斯的仁慈独裁者要求工程师规划的路径和云控方案必须满足以下条件:
拉普克斯和云环的阴影不得覆盖任何岛屿;
阴影的圆形区域半径在路径的每一段必须保持不变,仅在顶点处(即方向改变时)可调整;
阴影半径应尽可能大,但不得超过技术上限R1R_1

你需要帮助独裁者验证工程师提出的路径是否可行,并计算路径每一段的阴影半径。岛屿用多边形表示,拉普克斯中心路径用折线表示。假设所有岛屿均为凸多边形,且路径始终在海面上且不接触任何岛屿(但路径可能自交)。

考虑以下示例:设R0=10R_0=10R1=50R_1=50。第一段路径的阴影半径可取最小值5050;第二段路径中心经过(200,240)(200,240),该点距某岛屿西北角仅7.07R07.07 \leq R_0,因此不可行;第三段路径的半径受终点与三角形岛南端的距离限制,为20.020.0


输入格式

每个测试用例首行为22个实数R0R_0R1R_111个整数nn1n201 \leq n \leq 20,表示岛屿数量)。
接下来nn行描述岛屿,每行第一个数nin_i3ni203 \leq n_i \leq 20)表示岛屿顶点数,随后nin_i对实数给出顶点坐标。
接着一行描述路径,第一个数mm2m202 \leq m \leq 20)表示路径顶点数,随后mm对实数给出路径顶点坐标。

输入以一行0 0 00\ 0\ 0结束。所有实数保留11位小数,范围9999.9t9999.9-9999.9 \leq t \leq 9999.9


输出格式

对每个测试用例,输出一行m1m-1个整数,依次表示每段路径的阴影半径(四舍五入取整)。若某段半径不可行(小于R0R_0),输出00


输入数据 11

10 50 3  
3 220.0 360.0 240.0 380.0 200.0 380.0  
4 205.0 235.0 240.0 220.0 240.0 200.0 220.0 200.0  
4 60.0 340.0 120.0 280.0 180.0 340.0 120.0 400.0  
4 20.0 200.0 160.0 200.0 220.0 260.0 220.0 340.0  
0 0 0  

输出数据 11

50 0 20  

来源

台湾 2004