#P12871. [蓝桥杯 2025 国 Python A] 倒排索引

    ID: 12647 Type: RemoteJudge 3000ms 512MiB Tried: 0 Accepted: 0 Difficulty: 2 Uploaded By: Tags>字符串2025哈希 hashing蓝桥杯国赛

[蓝桥杯 2025 国 Python A] 倒排索引

题目描述

在信息检索系统中,倒排索引是一种常用的数据结构,用于快速查找包含特定词语的文档集合。为了增强搜索的灵活性,我们引入了 N-Gram 分词算法,参数 [min,max][\min, \max],表示分别按照长度 min\minmin+1\min+1\cdotsmax\max 对单词进行滑动窗口截取。例如对于 [3,5][3, 5] 的 N-Gram,会将单词 lanqb\tt{lanqb} 分割为 [lan,anq,nqb,lanq,anqb,lanqb][\tt{lan, anq, nqb, lanq, anqb, lanqb}] 的索引序列,如果文档长度小于 min\min,那么索引序列只包含文档本身。

给定 nn 个文档,对于第 ii 个文档 did_i,利用上述的 N-Gram 算法为其生成一组索引序列 LiL_i。对于查询词 qq,也对其应用 N-Gram 为其生成一个索引序列 PP,如果序列 PP 中的某个单词出现在序列 LiL_i 中,那么就认为查询词和文档 did_i 匹配成功。

请统计查询词 qq 能与多少个文档匹配成功。

输入格式

输入的第一行包含三个正整数 nnmin\minmax\max,相邻整数之间使用一个空格分隔。

接下来 nn 行,每行包含一个字符串,其中第 ii 行的字符串表示文档 did_i

接下来一行包含一个字符串,表示查询词 qq

输出格式

输出一行包含一个整数表示答案。

3 3 4
angel
ac
angle
lang
2

提示

【样例说明】

文档分词结果如下:

  • angel\tt{angel}[ang,nge,gel,ange,ngel][\tt{ang, nge, gel, ange, ngel}]
  • ac\tt{ac}[ac][\tt{ac}]
  • angle\tt{angle}[ang,ngl,gle,angl,ngle][\tt{ang, ngl, gle, angl, ngle}]

查询词分词结果如下:

  • lang\tt{lang}[lan,ang,lang][\tt{lan, ang, lang}]

angel\tt{angel}angle\tt{angle} 的分词中都包含 ang\tt{ang},所以答案为 22

【评测用例规模与约定】

s|s| 表示字符串 ss 的长度。

对于 50% 的评测用例,1n1001 \leq n \leq 100

对于所有评测用例,1n1031 \leq n \leq 10^31minmax201 \leq \min \leq \max \leq 201di,q201 \leq |d_i|, |q| \leq 20did_iqq 都只包含小写英文字母。