题目描述
本题字符串下标从 1 开始。
定义两个字符串相加的结果为将这两个字符串首尾拼接形成的新字符串。
令 f(a,b,c)=i=1∑∣a∣j=i∑∣a∣k=1∑∣b∣l=k∑∣b∣[ai,i+1,⋯,j+bk,k+1,⋯,l=c](a,b,c 均为字符串)。
即有多少种方式从 a,b 中分别选出一个非空子串使两个子串的和为 c。
给定 n 个字符串 s1,s2,s3,⋯,sn。
有 q 次询问,每次询问给出三个正整数 l,r,k,求 i=l∑rj=l∑rf(si,sj,sk)。
输入格式
第一行包含两个整数 n,q。
下面 n 行,每行一个只包含小写字母的非空字符串表示 s1,s2,⋯,sn。
下面 q 行,每行三个正整数 l,r,k,表示一次询问。
输出格式
对于每个询问,每行输出一个整数表示答案。
提示
样例解释
对于样例 1,给出部分 f 函数的值。
- f(s1,s1,s3)=0,f(s1,s2,s3)=1,f(s1,s3,s3)=2,f(s2,s1,s3)=1,f(s2,s2,s3)=4,f(s2,s3,s3)=7,f(s3,s1,s3)=2,f(s3,s2,s3)=7,f(s3,s3,s3)=12。
数据范围
本题采用捆绑测试。
令 m=∑∣si∣。
Subtask |
特殊性质 |
Score |
1 |
1≤n,m,q≤3×103 |
17 |
2 |
保证每次询问的 k 各不相同 |
23 |
3 |
1≤n,m,q≤3×104 |
27 |
4 |
字符串只包含小写字母 a |
19 |
5 |
无特殊限制 |
14 |
对于 100% 的数据:1≤n,m,q≤105,1≤l≤r≤n,1≤k≤n,字符串仅包含小写字母。