#luoguP12049. KMN の培养皿
KMN の培养皿
本题没有可用的提交语言。
题目背景
请仔细阅读提示说明部分。
KMN 是生竞大佬。她有一个培养皿,里面有很多个细胞。每个细胞占据一定的单元格。单元格上会有一个字母表示这个单元格被哪个细胞占据。相同的细胞用相同的字母表示。不同且相邻的细胞用不同的字母表示。
KMN 每次会询问你一个矩形框,如果用这个矩形框去切培养皿,切出来的部分(矩形内部)会包含多少个细胞。如果一个细胞被切成了多份,那么算是多个。
但是,这些细胞也会发生分裂或吞并,所以你还需要维护修改操作。
题目描述
有一个 的有色矩阵
连通块是你熟知的网格图四连通定义:从一个单元格 开始,每次走到曼哈顿距离不超过 的同色单元格,若能走到另一个单元格 ,则这两个单元格 在同一连通块。
有 次操作。
- 单点修改操作:修改 的字符。
- 区域查询操作:给出 ,问如果只保留 行与 列交部分的子矩阵,会有多少个连通块。注意:按照上述定义判定两个单元格是否在同一连通块时,不能走到被查询区域之外。
查询操作互相独立。
输入格式
第一行一个正整数 。
接下来 行,每行 个小写字母,表示有色矩阵。矩阵中颜色不超过 种,分别对应 个小写字母。
接下来一行一个正整数 ,表示操作个数。
接下来 行每行先是一个正整数 ,表示操作类型。
- 修改操作,,同行接下来两个正整数 和一个字符 ,表示修改 字符为 。
- 查询操作,,同行接下来四个正整数 ,含义如上。
输出格式
行每行一个正整数表示答案。保证 类操作恰好占到一半。
1
a
1
2 1 1 1 1
1
4
aabb
aaaa
aaaa
bbaa
3
2 1 1 4 4
2 2 2 3 3
2 1 1 2 4
3
1
2
5
aaaaa
ababa
aabaa
ababa
aaaaa
9
2 1 1 5 5
1 3 3 a
2 1 1 5 5
1 2 3 b
1 4 3 b
1 3 2 b
1 3 4 b
2 1 1 5 5
2 3 1 3 5
6
5
3
5
提示
本题满分为 分。
对于 的数据:
。
。
保证 操作个数相等。
本题 SubTask 只是为了把同规模数据分到一起,不存在捆绑关系。
测试点信息
|SubTask 编号|||
|:-:|:-:|:-:|
||||
||||
||||
||||
||||
||||
||||
||||
||||
||||
对于 的数据,保证 KMN 是生竞大神,即使对于 的培养皿也能准确无误地观测到每个格子及变化。
本题采用 Special Judge
。当一个测试点有 次 II 类操作时对于一次 II 类操作,若您的答案和标准答案一致,那么您获得 的分数。
因此,若您的程序无法解决某次查询问题,请输出一行单个整数(需在 int 范围内),以保证后面的询问能正常获得分数。