| “华为杯”2025 年广东工业大学 ACM 程序设计竞赛 |
|---|
| Finished |
今天橘猫打算教塑料后缀数组,只见他端上来一个长度为 $$$n$$$ 的由小写字母组成的字符串,问塑料某个后缀在所有后缀中排第几大,然而塑料直接掏出了板子干掉了,还嘲讽了一番。
面对如此场景,橘猫灵机一动,给塑料布置了一道新题目:
给你一个长度为 $$$n$$$ 的由小写字母组成的字符串 $$$S$$$,接下来会有 $$$Q$$$ 次查询/修改操作:
我们定义后缀的排名为在 $$$S$$$ 所有后缀中按字典序排序后该后缀的下标(从 $$$1$$$ 开始)。
字典序的定义为,对于两个字符串 $$$s$$$ 和 $$$t$$$,找到左起第一个不同的字符 $$$s_i$$$ 和 $$$t_i$$$。若找不到,则长度更短的字符串字典序更小;否则按字母表升序比较 $$$s_i$$$ 和 $$$t_i$$$。
塑料看到这道新题心生怯意,于是他请你帮他做这道题,不过他发现了题目的最下方还有一行字:
保证初始字符串的每个字符和更新操作给出的每个字符都是从 {a,b,...,z} 中均匀随机抽取的。
$$$\dagger$$$ 对于一个字符串 $$$s$$$,从第 $$$x$$$ 位开始的后缀为 $$$s_{x}s_{x+1}\dots s_n$$$ 如字符串 abcde 的从第 $$$3$$$ 开始的后缀为 cde。
本题每个数据点仅有一组测试样例。
第一行输入一个正整数 $$$n$$$ ($$$1 \leq n \leq 2 \times 10^5$$$),表示字符串 $$$S$$$ 的长度;
第二行输入一个长度为 $$$n$$$ 的字符串 $$$S$$$;
第三行输入一个正整数 $$$Q$$$ ($$$1 \leq Q \leq 2 \times 10^5$$$) 表示询问次数;
接下来 $$$Q$$$ 行,每行的输入格式为 1 x c ($$$1 \leq x \leq n, c \in \{a,b,...,z\}$$$) 或 2 x ($$$1 \leq x \leq n$$$),对应上述操作。
对于每个询问操作,输出一个正整数 $$$x$$$ 表示目标后缀的排名。
5abbaa32 31 1 b2 3
4 3
样例仅为了方便理解题面作参考,不符合数据性质
在第一次询问时,后缀的排名如下:
故长度为 $$$3$$$ 的后缀排名为 $$$4$$$;
在第二次询问时,后缀的排名如下:
故长度为 $$$3$$$ 的后缀排名为 $$$3$$$。
| Name |
|---|


