3631: 交集
题目描述
π + e 与他的女神 Y 是在线性代数课上认识的。
π + e 这个学期选上了数学建模这门课程,他想把建模的那套理论运用到实 际生活中来。
不妨将 π + e 的生活轨迹抽象成二维平面的若干个凸多边形,则这些凸多边 形的交集即为 π + e 最常经过的范围。
再将 Y 的生活轨迹抽象成二维平面的若干个椭圆,则这些椭圆的交集即为
Y 最常经过的范围。
(不要问我为什么是椭圆……大概人家 Y 是妹子吧……问 π + e 去)
π + e 想求出所有的凸多边形与所有椭圆的交集,以制造一场完美的邂逅。
为了降低难度,你只需求出这个交集里面的任意一个点即可。保证交集非 空,不然 π + e 也就没兴趣求交集了。
输入
输入文件名为 cap.in
第一行,一个正整数 n,表示凸多边形的数目;
接下来的若干行具体给出了 n 个凸多边形,对于第 i 个凸多边形数据,
• 第一行一个正整数 vi,表示这个凸多边形的边数。
• 接下来的 vi 行,每行两个整数 x, y,表示这个多边形的顶点坐标。保证以
逆时针形式给出凸多边形的坐标。
接下来一行,一个正整数 m,表示椭圆的数目;
接下来 m 行,每行 5 个整数 x1, y1, x2, y2, a,表示椭圆的两个焦点 F1(x1, y1),
F2(x2, y2) 的坐标以及半长轴长度 a。
如果对椭圆不是很了解, https://en.wikipedia.org/wiki/Ellipse 上有详细的
介绍以及动态图示。或者问出题人 or 黄学长也行。 (说不定黄学长会跟你讲这题
怎么做)
输出
输出文件名为 cap.out
输出两行,每行一个浮点数,表示你所求得的一个在交集内的点。
由于存在精度误差,因此你的答案 P(x, y) 是对的,当且仅当
1. 点 P 在所有凸多边形和椭圆的内部或者边界上;
2. 存在符合条件 (1) 的点 Q,并且 P、 Q 两点的距离 < 10−4
样例输入 复制
2 4
0 0
2 0
2 1
0 1
3
-1 -1
5 1
0 5
1
1 2 1 4 2
样例输出 复制
0.999998
1
提示
对于 30% 的数据,存在以整数点为答案的点;
对于 100% 的数据,有 1 ≤ n ≤ 500, 3 ≤ vi ≤ 1500, 3 ≤ ∑n i=0 −1 vi ≤ 1500,
1 ≤ m ≤ 1500, 1 2√(x1 − x2)2 + (y1 − y2)2 ≤ a ≤ 104,坐标范围为 [−104,104], 保证交集非空。