#abc251g. [abc251_g]Intersection of Polygons

[abc251_g]Intersection of Polygons

问题陈述

xyxy 平面中给出凸多边形 PP 的顶点,按照逆时针的顺序给出 (x1,y1),(x2,y2),ldots,(xN,yN)(x_1, y_1), (x_2, y_2), \\ldots, (x_N, y_N)。 (这里,xx 轴的正方向是右边,yy 轴的正方向是上边。)

基于多边形 PP,我们考虑 MM 个凸多边形 P1,P2,ldots,PMP_1, P_2, \\ldots, P_M
对于 i=1,2,ldots,Mi = 1, 2, \\ldots, M,多边形 PiP_i 是通过沿 xx 轴正方向平移 uiu_i,沿 yy 轴正方向平移 viv_i 得到的。换句话说,PiP_i 是一个凸多边形,其顶点为 $(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),ldots,(aQ,bQ)(a_1, b_1), (a_2, b_2), \\ldots, (a_Q, b_Q),判断“该点是否包含在所有 MM 个多边形 P1,P2,ldots,PMP_1, P_2, \\ldots, P_M 中”。

在这里,如果点在多边形的边界上,我们也认为该点包含在多边形中。

约束条件

  • 3leqNleq503 \\leq N \\leq 50
  • 1leqMleq2times1051 \\leq M \\leq 2 \\times 10^5
  • 1leqQleq2times1051 \\leq Q \\leq 2 \\times 10^5
  • \-108leqxi,yileq108\-10^8 \\leq x_i, y_i \\leq 10^8
  • \-108lequi,vileq108\-10^8 \\leq u_i, v_i \\leq 10^8
  • \-108leqai,bileq108\-10^8 \\leq a_i, b_i \\leq 10^8
  • 输入中的所有值都是整数。
  • (x1,y1),(x2,y2),ldots,(xN,yN)(x_1, y_1), (x_2, y_2), \\ldots, (x_N, y_N) 按逆时针的顺序形成一个凸多边形。
  • 多边形 PP 的每个内角都小于 180180 度。

输入

输入从标准输入给出,格式如下:

NN x1x_1 y1y_1 x2x_2 y2y_2 vdots\\vdots xNx_N yNy_N MM u1u_1 v1v_1 u2u_2 v2v_2 vdots\\vdots uMu_M vMv_M QQ a1a_1 b1b_1 a2a_2 b2b_2 vdots\\vdots aQa_Q bQb_Q

输出

输出 QQ 行。对于 i=1,2,ldots,Qi = 1, 2, \\ldots, Q,第 ii 行应该包含 Yes 如果点 (ai,bi)(a_i, b_i) 包含在所有的 MM 个多边形 P1,P2,ldots,PMP_1, P_2, \\ldots, P_M 中;否则,应该包含 No

示例输入 1

5
-2 -3
0 -2
1 0
0 2
-2 1
2
0 1
1 0
6
0 0
1 0
0 1
1 1
-1 -1
-1 -2

示例输出 1

Yes
No
Yes
Yes
Yes
No

多边形 PP 是一个五边形,其顶点为 (2,3),(0,2),(1,0),(0,2),(2,1)(-2, -3), (0, -2), (1, 0), (0, 2), (-2, 1)

  • 多边形 P1P_1 是通过将 PP 沿着 xx 轴正方向平移 00,沿着 yy 轴正方向平移 11 得到的五边形,其顶点为 (2,2),(0,1),(1,1),(0,3),(2,2)(-2, -2), (0, -1), (1, 1), (0, 3), (-2, 2)
  • 多边形 P2P_2 是通过将 PP 沿着 xx 轴正方向平移 11,沿着 yy 轴正方向平移 00 得到的五边形,其顶点为 (1,3),(1,2),(2,0),(1,2),(1,1)(-1, -3), (1, -2), (2, 0), (1, 2), (-1, 1)

因此,应该输出以下 66 行。

  • 11 行应该为 Yes,因为 (a1,b1)=(0,0)(a_1, b_1) = (0, 0) 包含在 P1P_1P2P_2 中。
  • 22 行应该为 No,因为 (a2,b2)=(1,0)(a_2, b_2) = (1, 0) 只包含在 P2P_2 中而不包含在 P1P_1 中。
  • 33 行应该为 Yes,因为 (a3,b3)=(0,1)(a_3, b_3) = (0, 1) 包含在 P1P_1P2P_2 中。
  • 44 行应该为 Yes,因为 (a4,b4)=(1,1)(a_4, b_4) = (1, 1) 包含在 P1P_1P2P_2 中。
  • 55 行应该为 Yes,因为 (a5,b5)=(1,1)(a_5, b_5) = (-1, -1) 包含在 P1P_1P2P_2 中。
  • 66 行应该为 No,因为 (a6,b6)=(1,2)(a_6, b_6) = (-1, -2) 只包含在 P2P_2 中而不包含在 P1P_1 中。

请注意,多边形的边界上的点也被认为包含在多边形中。

示例输入 2

10
45 100
-60 98
-95 62
-95 28
-78 -41
-54 -92
-8 -99
87 -94
98 23
87 91
5
-57 -40
-21 -67
25 39
-30 25
39 -20
16
4 5
-34 -8
-63 53
78 84
19 -16
64 9
-13 7
13 53
-20 4
2 -7
3 18
-12 10
-69 -93
2 9
27 64
-92 -100

示例输出 2

Yes
Yes
No
No
Yes
No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
No
No