题目描述
Margaret 正在研究基因序列。她正在分析一种新型生命体的两个序列 A 和 B,这种生命体不使用典型的四字母遗传密码。基因序列的编码方便地使用了 26 个大写英文字母 'A' 到 'Z' 来表示。
Margaret 想要比较序列 A 和 B。最佳方法是进行一系列序列分析测试。每个测试需要从 A 中取出一个前缀(称为 A-前缀),包含 A 的前 P 个字母;同时从 B 中取出一个后缀(称为 B-后缀),包含 B 的最后 S 个字母。然后 Margaret 需要比较 A-前缀和 B-后缀。子串是指连续的字母子序列。如果 B-后缀以某个 A-前缀的子串开头,即该子串是 B-后缀的前缀,则称该子串与 B-后缀匹配。测试的结果是 A-前缀中能与 B-后缀匹配的最长子串的长度。
Margaret 需要一些软件来确定一批 Q 个序列分析测试的结果。注意每个测试都是独立的。Margaret 有 A 和 B 的多个副本,每个测试都使用新的副本。
输入格式
输入的第一行给出测试用例的数量 T。随后是 T 个测试用例。每个测试用例的第一行包含两个字符串和一个整数,分别是 A、B 和 Q。每个测试用例的最后是 Q 行,第 i 行包含两个整数 Pi 和 Si,表示第 i 个序列分析测试的前缀和后缀大小。
输出格式
对于每个测试用例,输出一行 Case #x: y1 y2 ... yQ
,其中 x 是测试用例编号(从 1 开始),yi 是第 i 个查询的答案。
输入输出样例 #1
输入 #1
3
ABCABAC CABABA 3
3 6
7 6
6 5
BANANA HABANA 2
5 4
5 5
ABC ABD 1
2 1
输出 #1
Case #1: 1 4 3
Case #2: 4 1
Case #3: 0
说明/提示
样例解释
在样例 #1 中,有 3 个测试。第一个测试比较 A 的前缀 ABC 和 B 的完整后缀 CABABA。答案是 1,因为 C 是 ABC 中包含的最长子串,且是 CABABA 的前缀。第二个测试比较 ABCABAC 和 CABABA,最长匹配是 CABA。第三个测试比较 ABCABA 和 ABABA,最长匹配是 ABA。
在样例 #2 中,有 2 个测试。第一个测试比较 BANAN 和 BANA,最长匹配是 BANA。第二个测试比较 BANAN 和 ABANA,最长匹配是 A。
在样例 #3 中,有一个测试。比较 AB 和 D。由于没有匹配,答案是 0。
限制
- 1≤T≤100。
- 1≤Pi≤A 的长度。
- 1≤Si≤B 的长度。
测试集 1(5 分,可见评测结果)
- 1≤A 的长度 ≤3000。
- 1≤B 的长度 ≤3000。
- 1≤Q≤3000。
测试集 2(17 分,隐藏评测结果)
- 1≤A 的长度 ≤105。
- 1≤B 的长度 ≤105。
- 所有测试用例中 A 的长度总和 ≤5×105。
- 所有测试用例中 B 的长度总和 ≤5×105。
- 1≤Q≤105。