2085:【21NOIP提高组】棋局 - 爱问答

(爱问答)

2085:【21NOIP提高组】棋局

【题目描述】
在输了一晚上的麻将之后,小 z 和小 c 卸掉了手机上的所有牌类游戏。不过这怎么可能阻挡得了他们上课颓废的决心呢?现在他们的目光盯在了棋类游戏上,但他们两个除了天天下飞行器以外,几乎所有棋类游戏都只懂个大概规则。
“既然我们都会玩但只能玩一点点,不如我们自己搞个缝合怪出来吧!”
于是,在他们的精心脑洞之下,一个融合了围棋、象棋与军棋的奇妙游戏诞生了……
游戏在一张长 nn 行宽 mm 列的网格形棋盘上进行,棋子落在网格的交叉点上。我们不妨记左上角的交叉点的坐标为 (11, 11) ,右下角的交叉点坐标为 (nn, mm) 。
棋子分为黑白两色,对局双方各执一方棋子。
每个棋子除了颜色以外还有等级,不妨设 colicoli 为棋子 ii 的颜色,lvilvi 为棋子 ii 的等级。另外,棋盘上的网格线共有 44 种状态,对于第 ii 条网格线,设其状态为 optiopti 。
轮到每方下棋时,他可以选择棋盘上的一个己方棋子沿网格线进行移动到另一个交叉点,称为走子。形式化定义走子的过程如下:选择一个坐标序列 (x0x0, y0y0),(x1x1, y1y1), ...,(xkxk, ykyk),其中 kk 是任意选定的正整数,(x0x0, y0y0) 是棋子初始的位置,(xkxk, ykyk) 是棋子最终走到的位置,需要满足:
• 对于任意 i=0,1,...,k−1i=0,1,...,k−1 ,坐标 (xixi, yiyi) 和 (xi+1xi+1, yi+1yi+1) 之间必须有网格线直接相连,也就是说走子必须沿着网格线走 ;
• 对于任意 ii ≠ jj ,必须有 (xixi, yiyi) ≠  (xjxj, yjyj ) ,也就是说走子过程中不能经过重复位置,特别地 (x0x0, y0y0)≠ (xkxk, ykyk) ,也就是说不能原地不动(或走回原地) 。
• 对于任意 i=1,...,k−1i=1,...,k−1,坐标 (xixi, yiyi) 上必须没有棋子,也就是说走子时不能越过已有的棋子 。
• 若 (xkxk, ykyk) 上没有棋子,称为普通走子,否则称为吃子。在吃子过程中,设正在走的棋子颜色为 col1col1 ,等级为 lv1lv1 ,被吃的棋子颜色为 col2col2 ,等级为lv2lv2 ,则必须满足 col1col1 ≠ col2col2, lv1lv1 ≥ lv2lv2 ,换句话说只能吃与自己颜色不同, 且等级不高于自己等级的 棋子 。
需要注意的是,由上述定义可以得出,不允许棋子在吃子后继续向前走。
网格线的状态含义如下所述:
• 如果 opti=0opti=0 ,代表此路不通,走子时不能经过这条网格线。
• 如果 opti=1opti=1 ,代表这条网格线是一条“普通道路”,每次走子时棋子最多只能经过 11 条普通道路。
• 如果 opti=2opti=2 ,代表这条网格线是一条“直行道路”,每次走子时棋子可以经过任意条直行道路,但只能一直沿横向或一直沿纵向走,不能转弯。如沿直行道路从(1,11,1) 经过 (1,21,2) 走到 (1,31,3) 是可以的,但是从 (1,11,1) 经过 (1,21,2) 走到 (2,22,2) 不行。
• 如果 opti=3opti=3 ,代表这条网格线是一条“互通道路”,每次走子时棋子可以经过任意条互通道路,且中途可任意转弯。
同时规定在一次走子过程中,棋子经过的网格线的状态必须全部相同,比如从 (1,11,1)经过直行道路走到 (1,21,2) 再经过互通道路走到 (1,31,3) 是不允许的。
至于如何判断胜负等其他细节,与本题无关,故略去。
小 z 和小 c 开发出这款棋类游戏后,为了提升水平,想了一个训练的策略:一开始棋盘是空的,然后小 c 会每次往棋盘的某个空交叉点上放一枚棋子,小 z 需要快速计算出:若选择这枚新放上的棋子进行一次走子,棋盘上一共有多少个位置是能被走到的?注意,因为这只是思维训练,他们并不会真的走这枚棋子。
可怜的小 z 发现他的计算力不足以算出这个问题,只好向你求助。
【输入】
每个测试点由多组数据组成。
第一行:一个正整数 TT 表示数据组数。
对于每组数据:
第一行:33 个正整数 nn, mm, qq ,分别表示棋盘的行数、列数和游戏的轮数。
接下来 nn 行,每行为一个长 m−1m−1 的字符串,每个字符为 0、1、2、30、1、2、3 中的一个,第 ii 行第 jj 个字符表示交叉点 (i,ji,j) 连向交叉点 (i,j+1i,j+1) 的网格线状态。
接下来 n−1n−1 行,每行为一个长 mm 的字符串,每个字符为 0、1、2、30、1、2、3 中的一个,第 ii 行第 jj 个字符表示交叉点 (i,ji,j) 连向交叉点 (i+1,ji+1,j) 的网格线状态。
接下来 qq 行,每行 44 个非负整数 coli,lvi,xi,yicoli,lvi,xi,yi ,表示在第 ii 轮有一枚颜色为 colicoli ,
等级为 lvilvi 的棋子放在了交叉点 (xixi, yiyi) 上。其中 coli=0coli=0 表示黑子,coli=1coli=1 表示白子。
保证之前交叉点 (xixi, yiyi) 上没有棋子。
【输出】
对于每组数据输出 qq 行,每行一个非负整数,表示第 ii 枚棋子放置后能走到的交叉点数量。
【输入样例】
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
【输出样例】
4
3
3
3
2
【提示】
【样例 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) 。
【样例 2 输入】
2
2 3 4
22
33
123
0 2 1 2
0 1 2 1
1 2 1 3
0 3 2 2
3 2 3
3
1
3
32
32
0 2 1 2
1 2 3 2
0 1 2 2 
【样例 2 输出】
3
4
4
2
5
5

【数据范围】
测试点编号n × m ≤q ≤特殊性质1 ∼ 210050无3 ∼ 6500020007 ∼ 82 × 105105不存在“直行道路”与“互通道路”9 ∼ 11不存在“互通道路”12 ∼ 14不存在“直行道路”15 ∼ 16lvi = i17 ∼ 18lvi = q − i + 119 ∼ 212000n, m ≤ 100022 ∼ 25105无 
对于 100% 的数据,1≤T≤51≤T≤5 ,2≤n,m≤1052≤n,m≤105 ,4≤n×m≤2×1054≤n×m≤2×105 ,1≤q≤min1≤q≤min{105105, n×mn×m} ,1≤lvi≤q1≤lvi≤q ,1≤xi≤n1≤xi≤n ,1≤yi≤m1≤yi≤m ,colicoli ∈ {00, 11} 。
注:由于本题输入输出规模较大,建议使用较为快速的输入输出方式。

直播要代码(网上可找到的),只是贴代码会有***,代码较长,转成图不知能否看清。

2085:【21NOIP提高组】棋局

下一篇:红心照耀中国的思想只要内容?

上一篇:你大学时期的恋爱,维持了多久

热门标签:
控制 天下 西游记 祝福 三国演义 斗罗大陆 隋唐 灵魂 童年 左耳 复活 项链 斗破苍穹 蝙蝠 校花 勇气 风流 黑客 盗墓笔记 神武 魔域 小爱 完美世界 全职高手
最新更新:
岳飞e思维资料分析的课程怎么样呢? 开始征服的武侠位面的修真小说。 为什么把太监叫公公? 鲁迅写藤野先生的时代背景 商山早行这首诗抒发了诗人怎样的情感 书戴嵩画牛出现了两次笑,谈谈你对这两次笑的理解。 由渌罗山至桃园县记全文翻译,急!在线等 谁有苏派的所有小说麻烦发一下,我想要TXT版的,可以在百度网盘或者迅雷中下的,谢谢。 音士顿录音笔能看小说吗 简一的超高门板工艺是什么? 金田起义的标志是什么 《公司法》全文共多少字? 春秋战国为什么存在时间重叠 禅让制和世袭制的利弊 《红星照耀中国》中红色外交第一人是谁?