atcoder#ABC211F. [ABC211F] Rectilinear Polygons

[ABC211F] Rectilinear Polygons

题目描述

xy xy 平面上に N N 個の多角形があります。
これらの多角形は、全ての辺が x x 軸または y y 軸に平行で、全ての角が 90 90 度または 270 270 度で、かつ単純です。
i i 個目の多角形は Mi M_i 個の頂点からなり、j j 番目の頂点は (xi, j, yi, j) (x_{i,\ j},\ y_{i,\ j}) です。
多角形の辺は j j 番目の頂点と j+1 j+1 番目の頂点を結んでできる線分です(ただし Mi+1 M_i+1 番目の頂点は 1 1 番目の頂点とします)。

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

Q Q 個のクエリが与えられます。 i = 1, 2, , Q i\ =\ 1,\ 2,\ \dots,\ Q について、i i 個目のクエリは以下の通りです。

  • N N 個の多角形のうち、点 (Xi + 0.5, Yi + 0.5) (X_i\ +\ 0.5,\ Y_i\ +\ 0.5) を内部に含むものはいくつありますか?

输入格式

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

N N M1 M_1 x1, 1 x_{1,\ 1} y1, 1 y_{1,\ 1} x1, 2 x_{1,\ 2} y1, 2 y_{1,\ 2} \dots x1, M1 x_{1,\ M_1} y1, M1 y_{1,\ M_1} M2 M_2 x2, 1 x_{2,\ 1} y2, 1 y_{2,\ 1} x2, 2 x_{2,\ 2} y2, 2 y_{2,\ 2} \dots x2, M2 x_{2,\ M_2} y2, M2 y_{2,\ M_2} \vdots MN M_N xN, 1 x_{N,\ 1} yN, 1 y_{N,\ 1} xN, 2 x_{N,\ 2} yN, 2 y_{N,\ 2} \dots xN, MN x_{N,\ M_N} yN, MN y_{N,\ M_N} Q Q X1 X_1 Y1 Y_1 X2 X_2 Y2 Y_2 \vdots XQ X_Q YQ Y_Q

输出格式

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

题目大意

题目大意

给出平面的 NN 个简单多边形,对于每个多边形,其每一条边都平行于 XX 轴或 YY 轴,每一个角都为 9090 度或 270270 度,如图所示。

现在有 QQ 次询问,每次给出一个有序整数对 (X,Y)(X,Y) ,求点 (X+0.5,Y+0.5)(X+0.5,Y+0.5) 被多少个多边形覆盖。

数据范围

  • 1N1051\le N \le 10^5

  • 4Mi1054\le M_i \le 10^5

  • Mi,i[1,N],Mi\forall M_i,i\isin [1,N],M_i 为偶数

  • Mi4×105\sum M_i\le 4\times 10^5

  • 0xi,j,Xi,yi,j,Yi1050\le x_{i,j},X_i,y_{i,j},Y_i \le 10^5

  • 1Q1051\le Q \le 10^5

  • 对于 j=1,3,5...Mi1j=1,3,5... M_i-1 ,都有 xi,j=xi,j+1x_{i,j}=x_{i,j+1}

  • 对于 j=2,4,6...Mij=2,4,6... M_i ,都有 yi,j=yi,j+1y_{i,j}=y_{i,j+1} (特殊的, yi,Mi=y1,1y_{i,M_i}=y_{1,1}

  • 对于任意一个给出多边形,没有重合的顶点。即若 kjk \not= j ,则 (xi,j,yi,j)(xi,k,yi,k)(x_{i,j},y_{i,j}) \not= (x_{i,k},y_{i,k})

  • 输入的所有数据均为整数。

输入格式

第一行输入一个整数 NN

后面 11N+1N+1 行,第 ii 行先输入一个整数 MiM_i ,再输入 2×Mi2\times M_i 个整数:$x_{i,1},y_{i,1},x_{i,2},y_{i,2},...,x_{i,M_i},y_{i,M_i}$ 。其相邻两点所连成的线段即为多边形的边。

接下来读入一个数 QQ 。表示询问 QQ 次。

后面 QQ 行每行有两个数 Xi,YiX_i,Y_i ,表示询问点 (Xi+0.5,Yi+0.5)(X_i+0.5,Y_i+0.5) 被多少个多边形覆盖。

输出格式

QQ 行,每一行有一个整数表示答案。

样例解释

1.如上图

2.如下图

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

提示

制約

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

Sample Explanation 1

![](https://img.atcoder.jp/ghi/5fccf008dddd93f10ebfc7f13d04a0e0.png) 異なる多角形同士は、交差したり接触したりする可能性があることに注意してください。

Sample Explanation 2

![](https://img.atcoder.jp/ghi/1c97f791a2aadcf5637b1f10736fb820.png) 多角形は単純ですが、凸多角形とは限りません。