#P14813. [Bulgarian2017组队赛]Consistency
[Bulgarian2017组队赛]Consistency
题目描述
Eli 在下载某个著名吸血鬼电视剧的新一集时,突然想到:她怎么知道自己下载的真的是这一集,而不是一个可执行文件,一旦点击就会导致人类灭亡?
经过一些研究,她发现 tracker 系统使用了一种巧妙的方法来检查文件的某些部分是否一致。于是 Eli 想知道:它们究竟是怎么做到的?
一方面为了给她留下深刻印象,另一方面你也很想看这一集,而 Eli 又害怕点击这个文件会引发世界末日,于是你决定编写程序 consistency,高效完成这种一致性检查。
在本题中,我们把文件看作字符串。字符串只由以下字符组成:
'A' - 'Z', 'a' - 'z', '0' - '9', '+', '/'
也就是字母表:
{'A'-'Z', 'a'-'z', '0'-'9', '+', '/'}
输入格式
第一行输入两个整数 ,表示两个字符串的长度。
第二行输入长度为 的字符串,表示第一个文件的初始内容。
第三行输入长度为 的字符串,表示第二个文件的初始内容。
两个字符串都只包含上述字母表中的字符。
接下来输入一个整数 ,表示文件修改操作和一致性询问的总数。
接下来 行,每行是以下三种格式之一:
1 X C:把第一个字符串中位置 的字符修改为C;2 Y C:把第二个字符串中位置 的字符修改为C;3 K X Y:询问第一个字符串中从位置 开始、长度为 的子串,与第二个字符串中从位置 开始、长度为 的子串是否相同。
所有下标均从 开始。
输出格式
对于每个类型为 3 的询问,单独输出一行:
- 若两个子串相同,输出
YES; - 否则输出
NO。
数据范围
- ;
- 对每个询问,保证 ;
- 对每个询问,保证 。
样例
输入
30 27
Z29vZGpvYmZvcmRlY29kaW5ndGhpcw
Y29kaW5naXNlbGx5c3Bhc3Npb24
10
3 8 16 0
3 10 16 0
1 25 X
3 10 16 0
2 8 d
3 10 16 0
1 0 Y
3 3 0 0
3 2 28 20
3 1 28 20
输出
YES
NO
NO
YES
YES
NO
YES
样例说明
第一次询问比较第一个字符串中的 Y29kaW5n 和第二个字符串中的 Y29kaW5n。二者相同,因此输出 YES。
第二次询问长度稍长,比较的是 Y29kaW5ndG 和 Y29kaW5naX,二者不同,因此输出 NO。
之后有两次修改:把第一个字符串第 位的 G 改为 X,以及把第二个字符串第 位的 a 改为 d。第一次修改后相关子串仍然不同,第二次修改后变为相同。