A92843.[CSP-S 2025] 谐音替换

普及+/提高

官方

通过率:0%

时间限制:2.00s

内存限制:1024MB

题目描述

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

给定 nn 个字符串二元组,第 ii (1in1 \leq i \leq n) 个字符串二元组为 (si,1,si,2)(s_{i,1}, s_{i,2}),满足 si,1=si,2|s_{i,1}| = |s_{i,2}|,其中 s|s| 表示字符串 ss 的长度。

对于字符串 ss,定义 ss 的替换如下:

  • 对于 ss 的某个子串 yy,若存在 1in1 \leq i \leq n 满足 y=si,1y = s_{i,1},则将 yy 替换为 y=si,2y' = s_{i,2}。具体地,设 s=x+y+zs = x + y + z,其中 xxzz 可以为空,“+”表示字符串拼接,则 ss 的替换将得到字符串 s=x+y+zs' = x + y' + z

小 W 提出了 qq 个问题,第 jj (1jq1 \leq j \leq q) 个问题会给定两个不同的字符串 tj,1,tj,2t_{j,1}, t_{j,2},她想知道有多少种字符串 tj,1t_{j,1} 的替换能够得到字符串 tj,2t_{j,2}。两种 ss 的替换不同当且仅当子串 yy 的位置不同或用于替换的二元组 (si,1,si,2)(s_{i,1}, s_{i,2}) 不同,即 x,zx, z 不同或 ii 不同。你需要回答小 W 提出的所有问题。

输入格式

输入的第一行包含两个正整数 n,qn, q,分别表示字符串二元组的数量和小 W 提出的问题的数量。

输入的第 i+1i + 1 (1in1 \leq i \leq n) 行包含两个字符串 si,1,si,2s_{i,1}, s_{i,2},表示第 ii 个字符串二元组。

输入的第 j+n+1j + n + 1 (1jq1 \leq j \leq q) 行包含两个字符串 tj,1,tj,2t_{j,1}, t_{j,2},表示小 W 提出的第 jj 个问题。

输出格式

输出 qq 行,其中第 jj (1jq1 \leq j \leq q) 行包含一个非负整数,表示替换后得到字符串 tj,2t_{j,2} 的字符串 tj,1t_{j,1} 的替换的数量。

输入输出样例

  • 输入#1

    4 2
    xabcx xadex
    ab cd
    bc de
    aa bb
    xabcx xadex
    aaaa bbbb

    输出#1

    2
    0
    
  • 输入#2

    3 4
    a b
    b c
    c d
    aa bb
    aa b
    a c
    b a

    输出#2

    0
    0
    0
    0
  • 输入#3

    
    见选手目录下的 `replace/replace3.in` 与 `replace/replace3.ans`。该样例满足测试点 11,12 的约束条件。
    

    输出#3

    
    见选手目录下的 `replace/replace3.in` 与 `replace/replace3.ans`。该样例满足测试点 11,12 的约束条件。
    
  • 输入#4

    
    见选手目录下的 `replace/replace4.in` 与 `replace/replace4.ans`。该样例满足测试点 15,16 的约束条件。

    输出#4

    
    见选手目录下的 `replace/replace4.in` 与 `replace/replace4.ans`。该样例满足测试点 15,16 的约束条件。

说明/提示

样例 1 解释

对于小 W 的第一个询问,共有 2 种 t1,1t_{1,1} 的替换能够得到 t1,2t_{1,2}:

  1. x,zx, z 均为空串,y=xabcxy = \text{xabcx}, i=1i = 1,则 y=xadexy' = \text{xadex},替换后得到 xadex\text{xadex};

  2. x=xax = \text{xa}, y=bcy = \text{bc}, z=xz = \text{x}, i=3i = 3,则 y=dey' = \text{de},替换后得到 xadex\text{xadex}

数据范围

L1=i=1nsi,1+si,2L_1 = \sum_{i=1}^n |s_{i,1}| + |s_{i,2}|, L2=j=1qtj,1+tj,2L_2 = \sum_{j=1}^q |t_{j,1}| + |t_{j,2}|。对于所有测试数据,保证:

  • 1n,q2×1051 \leq n, q \leq 2 \times 10^5;
  • 2L1,L25×1062 \leq L_1, L_2 \leq 5 \times 10^6;
  • 对于所有 1in1 \leq i \leq n, si,1,si,2s_{i,1}, s_{i,2} 均仅包含小写英文字母,且 si,1=si,2|s_{i,1}| = |s_{i,2}|;
  • 对于所有 1jq1 \leq j \leq q, tj,1,tj,2t_{j,1}, t_{j,2} 均仅包含小写英文字母,且 tj,1tj,2t_{j,1} \neq t_{j,2}
测试点编号 n,qn, q \leq L1,L2L_1, L_2 \leq 特殊性质
1, 2 10210^2 200
3 ~ 5 10310^3 2,000
6 10310^3 10610^6 AB
7, 8 10410^4 10610^6 A
9, 10 2×1052 \times 10^5 10610^6 B
11, 12 2×1052 \times 10^5 2×1062 \times 10^6
13, 14 2×1052 \times 10^5 5×1065 \times 10^6 A
15, 16 2×1052 \times 10^5 5×1065 \times 10^6 B
17 ~ 20 2×1052 \times 10^5 5×1065 \times 10^6

特殊性质 A: q=1q = 1

特殊性质 B: 定义字符串 ss 为特别的,当且仅当字符串 ss 仅包含字符 aabb,且字符 bbss 中出现恰好一次。对于所有 1in1 \leq i \leq n, si,1,si,2s_{i,1}, s_{i,2} 均为特别的,且对于所有 1jq1 \leq j \leq q, tj,1,tj,2t_{j,1}, t_{j,2} 均为特别的。

首页