#P17130. 三串共鸣

    ID: 17269 传统题 4000ms 512MiB 尝试: 2 已通过: 2 难度: 7 上传者: 标签>CF2200Z函数字符串树状数组数据结构2026杭电暑期多校第5场Contest1233

三串共鸣

1006. 三串共鸣

题目描述

给定三个仅由小写英文字母组成的字符串 aabbcc。所有字符串的下标均从 00 开始,我们用 S|S| 表示字符串 SS 的长度,S[x..y]S[x..y] 表示字符串 SS 从下标 xx 到下标 yy 的连续子串,区间两端均包含在内。

你需要统计有多少个三元组 (i,j,l)i,j,l) 满足以下条件:

  1. 0l<a0 \le l < |a|0i<b0 \le i < |b|lj<cl \le j < |c|
  2. 在字符串 bb至少存在一个 起始位置 kk0k0\le kk+l<bk+l<b),满足 a[0..l]=b[k..k+l]=c[jl..j]a[0..l] = b[k..k+l] = c[j-l..j] 且位置 ii 被这个匹配子串覆盖,即 kik+lk \le i \le k+l

换句话说,对于每个 lljj,如果 aa 的长度为 l+1l+1 的前缀等于 cc 中以 jj 结尾、长度为 l+1l+1 的子串,那么我们记这个字符串为目标串。接着在 bb 中寻找所有等于该目标串的子串,并统计这些子串覆盖到的不同位置 ii 的数量。

注意,bb 中可能存在多个相同的匹配子串。如果它们覆盖了同一个位置 ii,那么对于当前固定的j,l(j,l),这个位置 ii 只能贡献一次。

输入格式

第一行一个正整数 TT1T1041\le T\le 10^4),表示数据组数。

对于每组数据,第一行三个整数 na,nb,ncn_a,n_b,n_c1na,nb,nc1051\le n_a,n_b,n_c\le 10^5),分别表示三个字符串的长度。

接下来三行,每行一个仅由小写英文字母构成的字符串,分别表示给定的字符串 aabbcc

对于所有数据,保证 (na+nb+nc)3×106\sum (n_a+n_b+n_c)\le 3\times 10^6

输出格式

对于每组数据,输出一行一个整数,表示满足条件的三元组的总数。

样例输入

2
2 3 3
ab
bab
abc
4 5 6
aaaa
aaaaa
aaaaaa

样例输出

3
90

提示

对于第一组样例,满足条件的三个三元组分别为:(1,0,01,0,0),(1,1,11,1,1) 和 (2,1,12,1,1)。

来源:2026杭电多校-测试专用(电子科大) 原题链接:http://acm.hdu.edu.cn/contest/problem_show.php?cid=1233&pid=1006