#4309. Intersection of Polygons

0

Intersection of Polygons

Intersection of Polygons

题目描述

凸多边形 NN 边形 PP 在 xyxy 平面上的顶点按 逆时针 顺序给出为 (x1,y1),(x2,y2),…,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)。(这里,xx 轴的正方向向右,yy 轴的正方向向上。) 基于该多边形 PP,我们考虑 MM 个凸 NN 边形 P1,P2,…,PMP_1, P_2, \ldots, P_M。
对于 i=1,2,…,Mi = 1, 2, \ldots, M,多边形 PiP_i 通过将 PP 在 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)$ 的凸 NN 边形。 对于每一个点 (a1,b1),(a2,b2),…,(aQ,bQ)(a_1, b_1), (a_2, b_2), \ldots, (a_Q, b_Q), 判断“该点是否被所有 MM 个多边形 P1,P2,…,PMP_1, P_2, \ldots, P_M 同时包含。” 这里,如果点在多边形的边界上,也视为被包含在多边形内。

输入格式

输入从标准输入按如下格式给出: NN x1x_1 y1y_1 x2x_2 y2y_2 ⋮\vdots xNx_N yNy_N MM u1u_1 v1v_1 u2u_2 v2v_2 ⋮\vdots uMu_M vMv_M QQ a1a_1 b1b_1 a2a_2 b2b_2 ⋮\vdots aQa_Q bQb_Q

输出格式

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

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
Yes
No
Yes
Yes
Yes
No
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
Yes
Yes
No
No
Yes
No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
No
No

提示

3≤N≤503 \leq N \leq 50 1≤M≤2×1051 \leq M \leq 2 \times 10^5 1≤Q≤2×1051 \leq Q \leq 2 \times 10^5 −108≤xi,yi≤108-10^8 \leq x_i, y_i \leq 10^8 −108≤ui,vi≤108-10^8 \leq u_i, v_i \leq 10^8 −108≤ai,bi≤108-10^8 \leq a_i, b_i \leq 10^8 输入中的所有值均为整数。 (x1,y1),(x2,y2),…,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N) 按逆时针顺序构成一个凸 NN 边形。 多边形 PP 的每个内角均小于 180180 度。多边形 PP 是一个五边形 (55-gon),其顶点为 (−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)。

因此,下面的 6 行应当被输出。

第 1 行应当为 YesYes,因为 (a1,b1)=(0,0)(a_1, b_1) = (0, 0) 同时被 P1P_1 和 P2P_2 包含。 第 2 行应当为 NoNo,因为 (a2,b2)=(1,0)(a_2, b_2) = (1, 0) 被 P2P_2 包含但不被 P1P_1 包含。 第 3 行应当为 YesYes,因为 (a3,b3)=(0,1)(a_3, b_3) = (0, 1) 同时被 P1P_1 和 P2P_2 包含。 第 4 行应当为 YesYes,因为 (a4,b4)=(1,1)(a_4, b_4) = (1, 1) 同时被 P1P_1 和 P2P_2 包含。 第 5 行应当为 YesYes,因为 (a5,b5)=(−1,−1)(a_5, b_5) = (-1, -1) 同时被 P1P_1 和 P2P_2 包含。 第 6 行应当为 NoNo,因为 (a6,b6)=(−1,−2)(a_6, b_6) = (-1, -2) 被 P2P_2 包含但不被 P1P_1 包含。

注意,在多边形的边界上的点也被视为包含在多边形内。

标签: AtCoder|abc251G

来源

AtCoder|abc251G