#P16827. [AFOI 2025] D.谐音替换

    ID: 18727 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>二分树状数组O2优化哈希 hashing

[AFOI 2025] D.谐音替换

背景

时光荏苒,那个关于“谐音替换”的下午,依旧清晰地印在小 ω\omega 的脑海里。

那时的他,执着于精确的匹配:必须完全相同的子串,才能进行替换。然而,现实往往不尽如人意,细微的差别就足以让一切努力付诸东流。

多年以后,当小 ω\omega 再次翻开语言学笔记,他对“谐音”有了新的理解:何必苛求完全一致?只需拥有相同的前后,便已足够谐音。就像回忆中的点滴,不必完整重现,只需一个开头或一个结尾,便能串联起整个故事。

题目描述

小 ω\omega 是一名喜欢语言学的算法竞赛选手。在语言学中,谐音替换是指将原有的字词替换为读音相同或相近的字词。小 ω\omega 发现,谐音替换的过程可以用字符串的前缀或后缀关系来进行描述。具体地,小 ω\omega 将谐音替换定义为以下字符串问题:

  • 字符串 XX 是 YY 的谐音替换,当且仅当 XX 是 YY 的前缀,或 XX 是 YY 的后缀。
  • 记语言集合为 S={S1,S2,…,Sn}S = \{S_1, S_2, \dots, S_n\}。字符串 TT 的一个谐音三元组是指将 TT 分成三个非空的连续段 T=A+B+CT = A + B + C(其中 ++ 表示字符串拼接),使得每一段 A,B,CA, B, C 均是 SS 中的某个字符串的谐音替换,每一种划分方案对应一个字符串三元组 (A,B,C)(A,B,C),我们称这个三元组为字符串 TT 的一个谐音三元组。 两个谐音三元组 (A1,B1,C1)(A_1, B_1, C_1) 和 (A2,B2,C2)(A_2, B_2, C_2) 本质不同,当且仅当 A1≠A2A_1 \neq A_2 或 B1≠B2B_1 \neq B_2 或 C1≠C2C_1 \neq C_2。

现在给出 nn 个字符串 S1,S2,…,SnS_1, S_2, \dots, S_n 作为语言集合,再给出 mm 个字符串 T1,T2,…,TmT_1, T_2, \dots, T_m 作为待分析的语言资料。
请对于每个 TiT_i,帮助小 ω\omega 求出有多少种本质不同的谐音三元组方案。

输入格式

第一行包含两个整数 nn 和 mm(1≤n,m≤1051 \le n, m \le 10^5)。

接下来 nn 行,每行一个字符串 SiS_i,表示语言集合中的单词。

接下来 mm 行,每行一个字符串 TiT_i,表示待分析的资料。

输出格式

输出 mm 行,其中第 jj(1≤j≤m1 \le j \le m)行包含一个非负整数,表示 TjT_j 有多少种本质不同的谐音三元组。

1 1
abbcabb
abbcabbcabb
12

提示

【样例1解释】

1212 种本质不同的谐音三元组如下:

  • (a,bbcabb,cabb)(\text{a},\text{bbcabb},\text{cabb})
  • (ab,bcabb,cabb)(\text{ab},\text{bcabb},\text{cabb})
  • (abb,cabb,cabb)(\text{abb},\text{cabb},\text{cabb})
  • (abbc,a,bbcabb)(\text{abbc},\text{a},\text{bbcabb})
  • (abbc,ab,bcabb)(\text{abbc},\text{ab},\text{bcabb})
  • (abbc,abb,cabb)(\text{abbc},\text{abb},\text{cabb})
  • (abbc,abbc,abb)(\text{abbc},\text{abbc},\text{abb})
  • (abbc,abbca,bb)(\text{abbc},\text{abbca},\text{bb})
  • (abbc,abbcab,b)(\text{abbc},\text{abbcab},\text{b})
  • (abbca,b,bcabb)(\text{abbca},\text{b},\text{bcabb})
  • (abbca,bb,cabb)(\text{abbca},\text{bb},\text{cabb})
  • (abbcab,b,cabb)(\text{abbcab},\text{b},\text{cabb})

【数据范围】

设 ∣X∣|X| 为字符串 XX 的长度,L1=∑i=1n∣Si∣L_1 = \sum\limits_{i = 1}^{n} |S_i|,L2=∑i=1m∣Ti∣L_2 = \sum\limits_{i = 1}^{m} |T_i|。对于所有测试数据,保证:

  • 1≤n,m≤1051 \le n , m \le 10^5;
  • 1≤∣Si∣1 \le |S_i|,3≤∣Ti∣3 \le |T_i|;
  • 1≤L1≤5×1051 \le L_1 \le 5 \times 10^5,3≤L2≤3×1053 \le L_2 \le 3 \times 10^5;
  • 对于所有 1≤i≤n1 \le i \le n,SiS_i 均仅包含大小写英文字母。
  • 对于所有 1≤i≤m1 \le i \le m,TiT_i 均仅包含大小写英文字母。
测试点编号 n,m≤n , m \le L1L_1 L2≤L_2 \le 特殊性质
1,21, 2 100100 200200 无
3∼53 \sim 5 10310^3 2 0002\,000 ^
66 ^ 10510^5 A、B
7,87, 8 10410^4 ^ A
9,109, 10 10510^5 B
11,1211, 12 ^ 2×1052 \times 10^5 无
13,1413, 14 5×1055 \times 10^5 3×1053 \times 10^5 A
15,1615, 16 ^ B
17∼2017 \sim 20 无

特殊性质 A:m=1m = 1。

特殊性质 B:对于所有 1≤i≤n1 \le i \le n,SiS_i 均以 z 结尾。对于所有 1≤i≤m1 \le i \le m,TiT_i 均不包含 z。