本题的核心在于利用匹配长度限制 L 较小(L≤10)的特点,通过预处理将每次查询转化为常数次集合查找,从而高效回答所有询问。
具体算法分以下两步:
在基因组数据库中,需要快速判断查询序列是否与参考序列的特定片段匹配。给定一个参考字符串 R,以及一个匹配长度限制 L(1≤L≤10)。现有 m 次询问,每次提供一个查询字符串 Q。对于每个 Q,如果其开头长度为 L 的连续子串或者结尾长度为 L 的连续子串(仅当 ∣Q∣≥L 时存在)在 R 中出现过,则认为 Q 满足条件;否则不满足。
数据范围:参考字符串 R 的长度不超过 105,询问次数 m 不超过 105,所有查询字符串 Q 的总长度之和不超过 105。所有字符串均由小写字母组成。
第一行包含一个由小写字母组成的字符串 R。 第二行包含两个正整数 m 和 L,分别表示询问次数和匹配长度限制。 接下来 m 行,每行包含一个由小写字母组成的字符串 Q,表示一次询问。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.