CFCF2209E.A Trivial String Problem
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
定义 f(t) 为将字符串 t 拆分成若干部分且每一部分均为 t 的非空前缀的最大数量。换句话说,f(t) 是满足以下条件的最大正整数 k:
- 存在 k 个字符串 p1,p2,…,pk,它们都是 t 的前缀,且 t=p1+p2+…+pk,其中 + 表示字符串拼接。
给定一个长度为 n 只包含小写英文字母的字符串 s。记 s[x..y] 表示 s 的第 x 到第 y 个字符(包括两端)构成的子串 ∗。你需要回答 q 个询问。对于第 i 个询问,给出两个整数 li 和 ri,你需要求出:
j=li∑rif(s[li..j])
∗ 如果字符串 a 可以通过从字符串 b 的开头删除若干(可以为 0 或全部)字符以及从结尾删除若干(可以为 0 或全部)字符得到,则称 a 是 b 的子串。
输入格式
每组测试数据包含多组用例。第一行包含一个整数 t(1≤t≤103),表示用例数。
每组用例的第一行包含两个整数 n 和 q(1≤n≤106,1≤q≤100)。
第二行给出长度为 n 的字符串 s,只包含小写英文字母。
接下来的 q 行,每行包含两个整数 li 和 ri(1≤li≤ri≤n),表示第 i 个询问。
保证所有用例中 n 的总和不超过 106。
输出格式
对于每个询问,输出一个整数,表示表达式的值。
输入输出样例
输入#1
6 1 1 a 1 1 5 2 aaaaa 1 5 2 4 6 2 abcdef 1 6 3 5 6 3 abaaba 1 6 1 3 2 6 7 3 abcabca 1 7 2 7 4 7 8 3 aababaac 1 8 2 8 3 7
输出#1
1 15 6 6 3 14 4 7 12 9 5 13 14 7
说明/提示
在第一个用例中,f(a)=1。
在第二个用例中,f(a)+f(aa)+f(aaa)+f(aaaa)+f(aaaaa)=1+2+3+4+5=15,f(a)+f(aa)+f(aaa)=1+2+3=6。
在第三个用例中,f(a)+f(ab)+f(abc)+f(abcd)+f(abcde)+f(abcdef)=1+1+1+1+1+1=6,f(c)+f(cd)+f(cde)=1+1+1=3。