#9840. 字符查询

    ID: 9840 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>树状数组多树状数组字符统计单点修改

字符查询

题目描述

给定一个由小写拉丁字母组成的字符串 ssqq 次查询。

回想一下,字符串 ss 的子串 s[l:r]s[l:r] 是字符串 sl+sl+1++srs_l+s_{l+1}+\ldots+s_r。例如,codeforces 的子串有 code, force, f, for, 但不包括 codertop

有两种类型的查询:

  • 1 pos c1~ pos ~c ( 1poss1 \le pos \le |s|, cc 是小写拉丁字母):用 cc 替换 sposs_{pos} (设置 spos=cs_{pos}=c);
  • 2 l r2~l~r ( 1lrs1\le l \le r \le |s|):计算查询的子串中不同字符的数量。

输入格式

输入的第一行包含一个由不超过 10510^5 个小写拉丁字母组成的字符串 ss

输入的第二行包含一个整数 qq ,表示查询的次数。

接下来的 qq 行包含查询,每行一个。每个查询的格式如问题描述中所述。保证至少有一个第二种类型的查询。

输出格式

对于每个第二种类型的查询,输出答案即查询的子串中不同字符的数量。

abacaba
5
2 1 4
1 4 b
1 5 b
2 4 6
2 1 7
3
1
2

样例分析

初始字符串为 abacaba

第一次操作,查询子串 s[1:4]s[1:4]baca 中不同字符的数量为 33

第二次操作,字符串变为 abababa

第三次操作,字符串变为 ababbba

第四次操作,查询子串 s[4:6]s[4:6]bbb 中不同字符的数量为 11

第五次操作,查询子串 s[1:7]s[1:7]ababbba 中不同字符的数量为 22

数据范围与提示

对于 100%100\% 的数据:1q1051 \le q \le 10^5