#AT1527. E - Simple String Queries
E - Simple String Queries
E - 简单字符串查询
分数:500分
问题描述
给定一个长度为N的字符串S,由小写英文字母组成。
处理Q个以下两种查询:
- 类型1:将S的第i_q个字符更改为c_q。 (如果第i_q个字符已经是c_q,则不执行任何操作。)
- 类型2:回答S的从第l_q个字符到第r_q个字符(包括)之间的子串中出现的不同字符的数量。
约束
- N,Q,i_q,l_q和r_q都是整数。
- S是由小写英文字母组成的字符串。
- c_q是小写英文字母。
- 1 ≤ N ≤ 500000
- 1 ≤ Q ≤ 20000
- |S| = N
- 1 ≤ i_q ≤ N
- 1 ≤ l_q ≤ r_q ≤ N
- 每个测试用例中至少有一个类型2查询。
输入
输入的格式如下:
N
S
Q
Query_1
...
Query_Q
这里,第4至第(Q+3)行的Query_i是以下之一:
1 i_q c_q
2 l_q r_q
输出
对于每一个类型2的查询,输出一行包含答案。
样例解释
样例输入1
7
abcdbbd
6
2 3 6
1 5 z
2 1 1
1 4 a
1 7 d
2 1 7
样例输出1
3
1
5
在第一个查询中,字符串cdbb包含三种字符:b,c和d,所以我们输出3。
在第二个查询中,字符串S被修改为abcdzbd。
在第三个查询中,字母a包含一种字符:a,所以我们输出1。
在第四个查询中,字符串S被修改为abcazbd。
在第五个查询中,字符串S不变,仍为abcazbd。
在第六个查询中,字符串abcazbd包含五种字符:a,b,c,d和z,所以我们输出5。
相关
在下列比赛中: