atcoder#ABC211F. [ABC211F] Rectilinear Polygons

[ABC211F] Rectilinear Polygons

配点 : 600600

問題文

xyxy 平面上に NN 個の多角形があります。 これらの多角形は、全ての辺が xx 軸または yy 軸に平行で、全ての角が 9090 度または 270270 度で、かつ単純です。 ii 個目の多角形は MiM_i 個の頂点からなり、jj 番目の頂点は (xi,j,yi,j)(x_{i, j}, y_{i, j}) です。 多角形の辺は jj 番目の頂点と j+1j+1 番目の頂点を結んでできる線分です(ただし Mi+1M_i+1 番目の頂点は 11 番目の頂点とします)。

多角形が単純とは

連続しないどの 22 辺も共通部分を持たない(すなわち交差も接触もしない)とき、その多角形を単純といいます。

$Q$ 個のクエリが与えられます。 $i = 1, 2, \dots, Q$ について、$i$ 個目のクエリは以下の通りです。
  • NN 個の多角形のうち、点 (Xi+0.5,Yi+0.5)(X_i + 0.5, Y_i + 0.5) を内部に含むものはいくつありますか?

制約

  • 1N1051 \leq N \leq 10^5
  • 4Mi1054 \leq M_i \leq 10^5
  • MiM_i は偶数
  • iMi4×105\sum_i M_i \leq 4 \times 10^5
  • 0xi,j,yi,j1050 \leq x_{i, j}, y_{i, j} \leq 10^5
  • jkj \neq k ならば (xi,j,yi,j)(xi,k,yi,k)(x_{i, j}, y_{i, j}) \neq (x_{i, k}, y_{i, k})
  • j=1,3,Mi1j = 1, 3, \dots M_i-1 について、xi,j=xi,j+1x_{i, j} = x_{i, j+1}
  • j=2,4,Mij = 2, 4, \dots M_i について、yi,j=yi,j+1y_{i, j} = y_{i, j+1} (ただし、yi,Mi+1=yi,1y_{i, M_i +1} = y_{i, 1} とする)
  • 与えられる多角形は単純
  • 1Q1051 \leq Q \leq 10^5
  • 0Xi,Yi<1050 \leq X_i, Y_i \lt 10^5
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN

M1M_1

x1,1x_{1, 1} y1,1y_{1, 1} x1,2x_{1, 2} y1,2y_{1, 2} \dots x1,M1x_{1, M_1} y1,M1y_{1, M_1}

M2M_2

x2,1x_{2, 1} y2,1y_{2, 1} x2,2x_{2, 2} y2,2y_{2, 2} \dots x2,M2x_{2, M_2} y2,M2y_{2, M_2}

\vdots

MNM_N

xN,1x_{N, 1} yN,1y_{N, 1} xN,2x_{N, 2} yN,2y_{N, 2} \dots xN,MNx_{N, M_N} yN,MNy_{N, M_N}

QQ

X1X_1 Y1Y_1

X2X_2 Y2Y_2

\vdots

XQX_Q YQY_Q

出力

QQ 行出力せよ。 ii 行目には、ii 個目のクエリに対する答えを出力せよ。

3
4
1 2 1 4 3 4 3 2
4
2 5 2 3 5 3 5 5
4
5 6 5 5 3 5 3 6
3
1 4
2 3
4 5
0
2
1

異なる多角形同士は、交差したり接触したりする可能性があることに注意してください。

2
4
12 3 12 5 0 5 0 3
12
1 1 1 9 10 9 10 0 4 0 4 6 6 6 6 2 8 2 8 7 2 7 2 1
4
2 6
4 4
6 3
1 8
0
2
1
1

多角形は単純ですが、凸多角形とは限りません。