时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定 n 个仅由小写英文字母组成的字符串是S1,S2,…,Sn
对于两个字符串 a,b,记它们的最长公共前缀长度为 lcp(a,b)。
现在有 q 组询问。每组询问给出两个整数 l,r,你需要求出所有满足 l≤i<j≤r 的字符串对 (si,sj) 的 lcp(si,sj) 之和
输入描述:
第一行两个整数 n,q,分别表示字符串个数和询问个数。
接下来 n 行,第 i 行一个字符串 si。
接下来 q 行,每行两个整数 l,r,表示一组询问。
- 对于 100% 的数据,1≤n≤10^4,1≤q≤5×10^3,1≤∣si∣≤50,所有字符串仅由小写英文字母组成,且所有字符串长度之和不超过 2×10^5,1≤l≤r≤n。
输出描述:
对于每组询问,输出一行一个整数,表示对应区间内所有无序字符串对的最长公共前缀长度之和。
示例1
输入
复制
4 3
ab
abc
ac
b
1 2
1 3
2 4
示例2
输入
复制
5 3
aaa
aa
aab
ab
b
1 3
2 4
1 5