#P15895. [Roi2021 Team]How Many Strings Are Less / 有多少字符串更小

[Roi2021 Team]How Many Strings Are Less / 有多少字符串更小

题目描述

给定一个由 nn 个字符串组成的集合 DD,以及一个字符串 ss。你需要求出集合 DD 中有多少个字符串按字典序严格小于 ss

字符串 ss 会被修改 qq 次。每次修改由一个整数 kik_i 和一个字符 cic_i 描述,表示把字符串 ss 中从位置 kik_i 到末尾的所有字符都替换成字符 cic_i

例如初始字符串为 anatoly,依次执行修改 (5,o),(3,b),(7,x)(5,o),(3,b),(7,x) 后,字符串变化如下:

anatoly -> anatooo -> anbbbbb -> anbbbbx

你需要输出初始状态以及每次修改后的答案。

字典序定义如下:字符串 aa 小于字符串 bb,当且仅当 aba \ne b,并且满足以下条件之一:

  • aabb 的前缀;
  • 存在某个位置,使得此前所有字符相同,而在该位置上 aa 的字符小于 bb 的字符。

输入格式

第一行包含两个整数 n,qn,q,表示集合 DD 中字符串数量与修改次数。

第二行包含初始字符串 ss,只含小写英文字母,长度不超过 10610^6

接下来 nn 行,每行一个集合 DD 中的字符串,只含小写英文字母。集合中所有字符串总长度不超过 10610^6

接下来 qq 行,每行包含一个整数 kik_i 和一个小写英文字母 cic_i,表示一次修改。

输出格式

第一行输出初始字符串 ss 对应的答案。

随后输出 qq 行,第 ii 行输出第 ii 次修改后的答案。

数据范围

1n,q1061 \le n,q \le 10^61kis1 \le k_i \le |s|

样例 1

输入:
4 3
anatoly
boris
anatooo
anbbbbu
anba
5 o
3 b
7 x

输出:
0
0
2
3

样例 2

输入:
5 5
abcde
buz
ababa
build
a
aba
1 b
3 z
2 u
4 z
1 a

输出:
3
3
3
4
4
1