#P1211. 音符序列(seq)

音符序列(seq)

题目描述

在一个音乐创作和分析系统中,音乐旋律可以用一个由小写英文字母组成的字符串来表示,每个字母代表一个特定的音符。现在有一个音乐音符序列字符串 SS (只包含小写字母),其长度为 NN

系统会对这个音乐音符序列进行一系列的操作和验证,总共有 QQ 个查询,这些查询需要按顺序依次处理。

每个查询分为以下两种类型:

1 x c :表示对音乐音符序列 SS 进行一次音符修改操作。具体来说,就是将 SS 中第 xx 个位置的音符替换为新的音符 cc (小写字母)。

2 l r :表示进行一次旋律片段验证操作。系统会将当前的音乐音符序列 SS 中的字符按照升序排列,得到一个新的字符串 TT。然后,需要验证 SS 中从第 ll 个字符到第 rr 个字符所构成的音符子串是否是 TT 的一个子串。如果是,则输出 Yes;否则输出 No

什么是子串? SS 的一个子串是指通过删除 SS 的前导字符和尾随字符中的 00 个或多个而得到的字符串。例如,ababc 的子串,而 ac 不是 abc 的子串。

例如,假设初始的音乐音符序列字符串 S = "abcde",如果执行查询 1 3 f,那么 SS 就会更新为 S = "abfde"。接着如果执行查询 2 1 3",此时将 SS 按升序排列得到 T = "abdef",而 SS 中从第 11 个字符到第 33 个字符构成的音符子串是 "abf",它不是 TT 的子串,所以会输出 No

输入格式

从文件 seq.inseq.in 中读入数据。

第一行输入一个整数 NN

第二行输入一个字符串 SS

第三行输入一个整数 QQ

接下来输入 QQ 行,每行输入一个询问,格式如题面所述。

输出格式

输出答案到文件 seq.outseq.out 中。

对每个询问,输出 YesNo

输入输出样例 #1

输入 #1

6
abcdcf
4
2 1 3
2 2 6
1 5 e
2 2 6

输出 #1

Yes
No
Yes

样例1解释

  • 在第1个查询中,通过将字符串SS的字符按升序排序得到的字符串TTabccdf。由SS的第1个到第3个字符组成的字符串abcTT的一个子串,所以应该输出Yes
  • 在第2个查询中,通过将字符串SS的字符按升序排序得到的字符串TTabccdf。由SS的第2个到第6个字符组成的字符串bcdcf不是TT的一个子串,所以应该输出No
  • 第3个查询将SS的第5个字符设置为e,使得SS变为abcdef
  • 在第4个查询中,通过将字符串SS的字符按升序排序得到的字符串TTabcdef。由SS的第2个到第6个字符组成的字符串bcdefTT的一个子串,所以应该输出Yes

数据范围

  • 1N1051\leq N \leq 10^5

  • SS 是长度为 NN 的字符串,由小写英文字母组成。

  • 1Q1051 \leq Q \leq 10^5

  • 对于每个第一类查询, 1xN1 \leq x \leq N

  • 对于第一种查询, cc 是一个小写英文字母。

  • 对于每个第二类查询, 1lrN1 \leq l \leq r \leq N

大样例下载