atcoder#ABC157E. [ABC157E] Simple String Queries

[ABC157E] Simple String Queries

题目描述

長さ N N の英小文字から成る文字列 S S が与えられます。

Q Q 個のクエリを処理してください。各クエリは以下の 2 2 種類のいずれかです。

  • type 1 1 : S S iq i_q 文字目を cq c_q に変更してください。元々 S S iq i_q 文字目が cq c_q である場合は、何もしないでください。
  • type 2 2 : S S lq l_q 文字目から rq r_q 文字目まで (両端含む) から成る部分文字列に表れる文字が何種類あるかを答えてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S S Q Q Query1 Query_1 \vdots QueryQ Query_Q

4 4 行目から Q+3 Q+3 行目の Queryi Query_i は、以下の 2 2 つのいずれかである。

1 1 iq i_q cq c_q

2 2 lq l_q rq r_q

输出格式

type 2 2 の各クエリについて答えを改行区切りで出力せよ。

题目大意

题目描述

给定长度为n的原字符串与q次操作或询问。其格式如下:

①1 i c: 将第i位字符改为c(c也是字符)。

②2 l r: 询问区间[l,r]内不同字符的个数。

输入格式

第一行输入n,表示原字符串的长度。

第二行输入原字符串。

第三行输入q,表示询问或操作的次数。

第四至q+3行,每行表示一次询问或操作。详见题目描述。

输出格式

对于每次询问输出结果,详见题目描述。

感谢ducati小蒟蒻的翻译

7
abcdbbd
6
2 3 6
1 5 z
2 1 1
1 4 a
1 7 d
2 1 7
3
1
5

提示

制約

  • N, Q, iq, lq, rq N,\ Q,\ i_q,\ l_q,\ r_q は整数
  • S S は英小文字列
  • cq c_q は英小文字
  • 1  N  500000 1\ \leq\ N\ \leq\ 500000
  • 1  Q  20000 1\ \leq\ Q\ \leq\ 20000
  • S = N |S|\ =\ N
  • 1  iq  N 1\ \leq\ i_q\ \leq\ N
  • 1  lq  rq  N 1\ \leq\ l_q\ \leq\ r_q\ \leq\ N
  • 各テストケースに type 2 2 のクエリは 1 1 つ以上存在する

Sample Explanation 1

1 1 つ目のクエリでは、 cdbb には b , c , d3 3 種類の文字が含まれますから、 3 3 を出力します。 2 2 つ目のクエリで、 S S abcdzbd に変更されます。 3 3 つ目のクエリでは、 a には a1 1 種類の文字が含まれますから、 1 1 を出力します。 4 4 つ目のクエリで、 S S abcazbd に変更されます。 5 5 つ目のクエリでは、 S S は変わらず abcazbd のままです。 6 6 つ目のクエリでは、 abcazbd にはa, b, c, d, z5 5 種類の文字が含まれますから、 5 5 を出力します。