当前没有测试数据。
G - 多边形的交集
得分:600 点
问题描述
在一个二维直角坐标系中,给定一个凸多边形P的N个顶点(x1,y1),(x2,y2),…,(xN,yN)。(这里,x轴的正方向是向右的,y轴的正方向是向上的)
基于多边形P,我们考虑M个凸多边形P1,P2,…,PM。
对于i=1,2,…,M,多边形Pi是通过将P向x轴的正方向平移ui,向y轴的正方向平移vi得到的。换句话说,Pi的顶点是$(x_1+u_i, y_1+v_i), (x_2+u_i, y_2+v_i), \ldots, (x_N+u_i, y_N+v_i)$。
对于每一个点(a1,b1),(a2,b2),…,(aQ,bQ),判断是否“点同时位于所有的M个多边形P1,P2,…,PM中”。这里,如果点在多边形的边界上,也视为点在多边形中。
约束条件
- 3≤N≤50
- 1≤M≤2×105
- 1≤Q≤2×105
- −108≤xi,yi≤108
- −108≤ui,vi≤108
- −108≤ai,bi≤108
- 输入中的所有值均为整数
- (x1,y1),(x2,y2),…,(xN,yN)按逆时针顺序排列构成了凸N边形
- 多边形P的每个内角小于180度
输入
从标准输入读入数据,数据格式如下:
N
x1 y1
x2 y2
⋮
xN yN
M
u1 v1
u2 v2
⋮
uM vM
Q
a1 b1
a2 b2
⋮
aQ bQ
输出
输出Q行。对于i=1,2,…,Q,第i行输出Yes
表示点(ai,bi)同时位于所有的M个多边形P1,P2,…,PM中,输出No
表示没有。
样例解释
多边形P是一个五边形,它的顶点是(−2,−3),(0,−2),(1,0),(0,2),(−2,1)。
- 多边形P1是将P向x轴的正方向平移0个单位,向y轴的正方向平移1个单位得到的多边形,它的顶点是(−2,−2),(0,−1),(1,1),(0,3),(−2,2)。
- 多边形P2是将P向x轴的正方向平移1个单位,向y轴的正方向平移0个单位得到的多边形,它的顶点是(−1,−3),(1,−2),(2,0),(1,2),(−1,1)。
所以应该输出以下6行:
- 第一行输出
Yes
,因为(a1,b1)=(0,0)同时位于P1和P2中。
- 第二行输出
No
,因为(a2,b2)=(1,0)只位于P2中,不在P1中。
- 第三行输出
Yes
,因为(a3,b3)=(0,1)同时位于P1和P2中。
- 第四行输出
Yes
,因为(a4,b4)=(1,1)同时位于P1和P2中。
- 第五行输出
Yes
,因为(a5,b5)=(−1,−1)同时位于P1和P2中。
- 第六行输出
No
,因为(a6,b6)=(−1,−2)只位于P2中,不在P1中。
注意:一个处于多边形边界上的点也被视为在多边形内。
