Problem1888--[NOIP2021-T4]棋局

1888: [NOIP2021-T4]棋局

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MB

Submit

Description

题目背景

在输了一晚上的麻将之后,小 z 和小 c 卸掉了手机上的所有牌类游戏。不过这怎么可能阻挡得了他们上课颓废的决心呢?现在他们的目光盯在了棋类游戏上,但他们两个除了天天下飞行棋以外,几乎所有棋类游戏都只懂个大概规则。
“既然我们都会玩但只能玩一点点,不如我们自己搞个缝合怪出来吧!”
于是,在他们的精心脑洞之下,一个融合了围棋、象棋与军棋的奇妙游戏诞生了……

题目描述

游戏在一张长n行宽m列的网格形棋盘上进行,棋子落在网格的交叉点上,我们不妨记左上角的交叉点的坐标为(1,1),右下角的交叉点坐标为(n,m)

棋子分为黑白两色,对局双方各执一方棋子。

每个棋子除了颜色以外还有等级,不妨设coli 为棋子i的颜色,lvi 为棋子i的等级。另外,棋盘上的网格线共有4种状态,对于第 ii 条网格线,设其状态为opti

轮到每方下棋时,他可以选择棋盘上的一个己方棋子沿网格线进行移动到另一个交叉点,称为走子。形式化定义走子的过程如下:选择一个坐标序列 (x0,y0),(x1,y1),,(xk,yk),其中k是任意选定的正整数,(x0,y0) 是棋子初始的位置,(xk,yk) 是棋子最终走到的位置,需要满足:

  • 对于任意i=0,1,,k1,坐标(xi+1,yi+1) 之间必须有网格线直接相连,也就是说走子必须沿着网格线走
  • 对于任意 ij,必须有(xi,yi)(xj,yj),也就是说走子过程中不能经过重复位置,特别地(x0,y0)(xk,yk),也就是说不能原地不动(或走回原地)
  • 对于任意 i=1,,k1,坐标(xi,yi) 上必须没有棋子,也就是说走子时不能越过已有的棋子
  • (xk,yk) 上没有棋子,称为普通走子,否则称为吃子。在吃子过程中,设正在走的棋子颜色为col1,等级为lv1,被吃的棋子颜色为col2,等级为lv2,则必须满足 col1col2,lv1lv2,换句话说只能吃与自己颜色不同,且等级不高于自己等级的棋子

需要注意的是,由上述定义可以得出,不允许棋子在吃子后继续向前走。

网格线的状态含义如下所述:

  • 如果opti=0,代表此路不通,走子时不能经过这条网格线;
  • 如果opti=1,代表这条网格线是一条“普通道路”,每次走子时棋子最多只能经过 11 条普通道路。
  • 如果opti=2,代表这条网格线是一条“直行道路”,每次走子时棋子可以经过任意条直行道路,但只能一直沿横向或一直沿纵向走,不能转弯。如沿直行道路从(1,1)经过(1,2)走到(1,3)是可以的,但是从(1,1)经过(1,2) 走到(2,2) 不行。
  • 如果opti=3,代表这条网格线是一条“互通道路”,每次走子时棋子可以经过任意条互通道路,且中途可任意转弯。

同时规定在一次走子过程中,棋子经过的网格线的状态必须全部相同,比如从(1,1)经过直行道路走到(1,2)再经过互通道路走到(1,3)是不允许的。

至于如何判断胜负等其它细节,与本题无关,故略去。

小 z 和小 c 开发出这款棋类游戏后,为了提升水平,想了一个训练的策略:一开始棋盘是空的,然后小 c 会每次往棋盘的某个空交叉点上放一枚棋子,小 z 需要快速计算出:若选择这枚新放上的棋子进行一次走子,棋盘上一共有多少个位置是能被走到的?注意:因为这只是思维训练,他们并不会真的走这枚棋子。

可怜的小 z 发现他的计算力不足以算出这个问题,只好向你求助。



Input

每个测试点由多组数据组成。

第一行:一个正整数T表示数据组数。

对于每组数据:

第一行:三个正整数n, m, q,分别表示棋盘的行数、列数和游戏的轮数。

接下来n行,每行为一个长m1的字符串,每个字符为0123 中的一个,第i行第j个字符表示交叉点 (i,j) 连向交叉点(i,j+1) 的网格线状态。

接下来n1行,每行为一个长m的字符串,每个字符为0123 中的一个,第i行第j个字符表示交叉点(i,j)连向交叉点(i+1,j) 的网格线状态。

接下来q行,每行4个非负整数coli,lvi,xi,yi,表示在第i轮有一枚颜色为coli,等级为lvi 的棋子放在了交叉点(xi,yi) 上。其中coli=0 表示黑子,coli=1 表示白子。保证之前交叉点(xi,yi)上没有棋子。

Output

对于每组数据输出q行,每行一个非负整数,表示第i枚棋子放置后能走到的交叉点数量。

Sample Input Copy

1
3 3 5
13
22
23
010
233
0 1 2 3
1 2 2 1
1 3 1 2
0 2 3 2
1 3 2 2

Sample Output Copy

4
3
3
3
2

HINT

【样例解释 #1】

放置棋子1后,它能走到的位置为(2,1),(2,2),(3,2),(3,3)

放置棋子2后,它能走到的位置为(2,2),(2,3),(3,1)

放置棋子3后,它能走到的位置为(1,1),(1,3),(2,2)

放置棋子4后,它能走到的位置为(2,2),(3,1),(3,3)

放置棋子5后,它能走到的位置为(2,3),(3,2)

【数据范围】

测试点编号 n×m q 特殊性质
12 100 50
36 5000 2000
78 2×105 105 不存在“直行道路”与“互通道路”
911 2×105 105 不存在“互通道路”
1214 2×105 105 不存在“直行道路”
1516 2×105 105 lvi=i
1718 2×105 105 vi=qi+1
1921 2×105 2000 n,m1000
2225 2×105
105

对于100% 的数据,1T52n,m1054n×m2×105,1qmin{105,n×m}1lviq1xin1yimcoli{0,1}

注:由于本题输入输出规模较大,建议使用较为快速的输入输出方式。

Source/Category

NOIP