#P12774. 子串的故事(2)
子串的故事(2)
子串的故事(2)
Problem Description
对于一个包含字符串 的字符串可重集 ,定义 的价值为
$$\sum\limits_{1 \leq i < j \leq k} \mathrm{LCP}(s_i, s_j) $$给出一个长度为 的字符串 ,下标从 到 。有一个初始为空的字符串集合 。 有 次操作,每次操作给出两个正整数 ,你需要将字符串 的所有前缀都加入集合 。形式化地,对于所有 ,你需要将 加入集合 。 每次操作过后,你都需要求出此刻集合 的价值。答案对 取模。 :字符串 的最长公共前缀的长度。 :字符串 从第 到第 位的字符组成的子串,即 。
Input
每个测试点中包含多组测试数据。输入的第一行包含一个正整数 ,表示数据组数。对于每组测试数据:
第一行两个正整数 ,分别表示字符串长度和操作次数。
第二行一个长度为 的字符串 ,字符串 只包含小写拉丁字母(从 a
到 z
,共 个)。
接下来 行,每行两个正整数 ,表示将字符串 的所有前缀都加入集合 。
保证所有测试数据中 之和与 之和均不超过 。
Output
对于每组测试数据:输出 行,每行一个整数,表示每次操作过后集合 的价值。答案对 取模。
Sample Input
1
4 5
aaba
1 2
1 4
2 3
3 4
3 3
Sample Output
1
22
35
36
38
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(2)