#YDSP2023D1D. Yet Another 字母矩阵问题
Yet Another 字母矩阵问题
题目描述
你有一个 行 列的小写字母矩阵,你需要把这个矩阵切成两个连通的部分(分别至少一个字母),其中一部分的所有字母都小于另一部分的所有字母,求方案数。
但是这个问题太简单了,所以在此基础上有 次操作,分为两种:
- 修改第 行 列的字符为 ,并求出当前的方案数。这个操作是临时的,也就是回答结束后操作就恢复。
- ( 的 ASCII 为 ),新增一列,新列第 行字符为 ,并求出当前的方案数。这个操作是永久的,会影响之后的询问。
输入格式
输入有三个正整数 ,分别表示行数、列数和询问数。
之后 行,每行 个字符,表示最开始的字符矩阵。
令 为第 次操作之后的方案数。特别地, 为初始方案数,。
之后 行,每行一个操作,为下面两种格式之一:
- ,表示一次修改操作,假如当前是第 次操作,那么真实 ,,其中 是按位异或。
- ,表示一次增加操作。该操作不加密。
输出格式
输出 ,每个数一行。
样例 #1
样例输入 #1
3 3 6
aba
aee
eff
a 3 2
e 3 0
f 0 0
b 3 3
e 0 3
+ aaa
样例输出 #1
2
2
1
0
1
3
2
样例 #2, #3, #4, #5, #6
样例 分别满足测试点 的限制。
提示
【样例解释】
一开始有如下两种划分方案(分为粗体和非粗体两块):
方案 1 | a | b | a | 方案 2 | a | b | a |
---|---|---|---|---|---|---|---|
a | e | a | e | ||||
e | f | e | f |
第一次询问将第 行第 列修改成 a
。
第二次询问将第 行第 列修改成 e
。
第三次询问将第 行第 列修改成 f
。
第四次询问将第 行第 列修改成 b
。
第五次询问将第 行第 列修改成 e
。
接下来新增一列,现在矩阵为:
abaa
aeea
effa
【数据范围】
Testcases | + 数量 |
特殊性质 | |||
---|---|---|---|---|---|
字符只有 a,b |
|||||
输入矩阵第奇数列等于后一列 | |||||
询问点左侧和上方字符相同 | |||||
询问点左侧和上方字符相同 | |||||
对于全体数据,保证 ,,,其中加列不超过 次,所有字符串都只有小写字母。