#L3986. 「JOI Open 2023」细胞自动机

「JOI Open 2023」细胞自动机

题目描述

译自 JOI Open 2023 T2 「セルオートマトン / Cell Automaton」

我们有一个充分大的二维网格,网格由从上到下和从左到右的正方形单元格密铺而成。

有一个单元格是坐标原点。令 (x,y)(x,y) 表示从原点向右移动 xx 个单元格,再向上移动 yy 个单元格所到达的单元格。这里,向左移动 aa 个单元格意味着向右移动 a-a 个单元格;类似地,向下移动 aa 个单元格意味着向上移动 a-a 个单元格。

在时刻 00,单元格 (X1,Y1),(X2,Y2),,(XN,YN)(X_1,Y_1),(X_2,Y_2),\ldots,(X_N,Y_N) 是黑色的,其余单元格是白色的。

对于 t=0,1,2,t=0,1,2,\ldots,根据单元格在 tt 时刻的颜色,单元格在 t+1t+1 时刻的颜色按如下方法确定:

  1. 如果在时刻 tt 时单元格是黑色,那么在时刻 t+1t+1 这个单元格变为灰色。
  2. 如果在时刻 tt 时单元格是灰色,那么在时刻 t+1t+1 这个单元格变为白色。
  3. 如果在时刻 tt 时单元格是白色,并且与其相邻的四个单元格(即与其共边的四个单元格)中至少有一个在时刻 tt 是黑色的,那么在时刻 t+1t+1 这个单元格变为黑色。否则,它将在时刻 t+1t+1 保持白色。

你有 QQ 次查询。对于第 jj 个查询,你应该回答在时刻 TjT_j 时有多少黑色单元格。

给定在时刻 00 时的单元格颜色信息和查询,写一个程序回答询问。

输入格式

第一行两个整数 N,QN,Q

接下来 NN 行,每行两个整数 Xi,YiX_i,Y_i,表示时刻 00 时黑色单元格的坐标。

接下来 QQ 行,每行一个整数 TjT_j,表示查询时刻。

输出格式

输出 QQ 行,每行一个整数,表示在时刻 TjT_j 时黑色单元格的数量。

样例 1

输入

22 33 00 22 11 00 00 11 22

输出

22 88 1212

下图展示了在时刻 0 时的单元格情况。因为有 2 个黑色单元格,所以第一个询问的回答是 2。

下图展示了在时刻 1 时的单元格情况。因为有 8 个黑色单元格,所以第二个询问的回答是 8。

下图展示了在时刻 2 时的单元格情况。因为有 12 个黑色单元格,所以第三个询问的回答是 12。 这组样例满足子任务 1,2,6,7 的限制。

样例 2

输入

33 55 00 00 22 22 55 55 00 11 22 33 44

输出

33 1212 2121 2424 2626

该样例满足子任务 1,2,4,6,71,2,4,6,7 的限制。

样例 3

输入

44 1010 3-3 3-3 33 33 4-4 44 44 4-4 00 11 22 33 44 55 66 77 88 99

输出

44 1616 3232 4848 5656 5656 5555 5656 6060 6464

该样例满足子任务 1,2,6,71,2,6,7 的限制。

数据范围与提示

对于所有数据,满足:

  • 1N1051\le N\le 10^5
  • 1Q5×1051\le Q\le 5\times 10^5
  • Xi,Yi109|X_i|,|Y_i|\le 10^9
  • (Xi,Yi)(Xj,Yj) (1i<jN)(X_i,Y_i)\neq (X_j,Y_j)\ (1\le i < j\le N)
  • 0Tj1090\le T_j\le 10^9
  • Tj<Tj+1T_j<T_{j+1}(查询时刻严格递增)

子任务划分

子任务 附加限制 分值
11 Xi,Yi50\lvert X_i\rvert ,\lvert Y_i\rvert \le 50Tj50T_j\le 50 44
22 Xi,Yi1000\lvert X_i\rvert ,\lvert Y_i\rvert \le 1000Tj1000T_j\le 1000 1212
33 Xi=YiX_i=Y_iQ=1Q=1 88
44 Xi=YiX_i=Y_i -
55 N2000N\le 2000Q=1Q=1 1717
66 N2000N\le 2000 2525
77 无附加限制 2626