101574: [AtCoder]ABC157 E - Simple String Queries

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Score : $500$ points

Problem Statement

You are given a string $S$ of length $N$ consisting of lowercase English letters.

Process $Q$ queries of the following two types:

  • Type $1$: change the $i_q$-th character of $S$ to $c_q$. (Do nothing if the $i_q$-th character is already $c_q$.)
  • Type $2$: answer the number of different characters occurring in the substring of $S$ between the $l_q$-th and $r_q$-th characters (inclusive).

Constraints

  • $N$, $Q$, $i_q$, $l_q$, and $r_q$ are integers.
  • $S$ is a string consisting of lowercase English letters.
  • $c_q$ is a lowercase English letter.
  • $1 \leq N \leq 500000$
  • $1 \leq Q \leq 20000$
  • $|S| = N$
  • $1 \leq i_q \leq N$
  • $1 \leq l_q \leq r_q \leq N$
  • There is at least one query of type $2$ in each testcase.

Input

Input is given from Standard Input in the following format:

$N$
$S$
$Q$
$Query_1$
$\vdots$
$Query_Q$

Here, $Query_i$ in the $4$-th through $(Q+3)$-th lines is one of the following:

$1$ $i_q$ $c_q$
$2$ $l_q$ $r_q$

Output

For each query of type $2$, print a line containing the answer.


Sample Input 1

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

Sample Output 1

3
1
5

In the first query, cdbb contains three kinds of letters: b , c , and d, so we print $3$.

In the second query, $S$ is modified to abcdzbd.

In the third query, a contains one kind of letter: a, so we print $1$.

In the fourth query, $S$ is modified to abcazbd.

In the fifth query, $S$ does not change and is still abcazbd.

In the sixth query, abcazbd contains five kinds of letters: a, b, c, d, and z, so we print $5$.

Input

题意翻译

# 题目描述 给定长度为n的原字符串与q次操作或询问。其格式如下: ①1 i c: 将第i位字符改为c(c也是字符)。 ②2 l r: 询问区间[l,r]内不同字符的个数。 # 输入格式 第一行输入n,表示原字符串的长度。 第二行输入原字符串。 第三行输入q,表示询问或操作的次数。 第四至q+3行,每行表示一次询问或操作。详见题目描述。 # 输出格式 对于每次询问输出结果,详见题目描述。 感谢ducati小蒟蒻的翻译

加入题单

算法标签: