随笔分类 - B - 字符串 - 后缀数据结构
摘要:简述版题意:给定字符串 S 与一棵树 T,树上每个点有一个字符。求树上所有简单路径对应的字符串在 S 中的出现次数之和。
阅读全文
摘要:给定一个包含 n 个小写字母的字符串 s,用 s 生成 n 个串 t1...n,其中 ti 等于字符串 s 将第 i 个字符替换为 * 得到的字符串。
特别注意:这里的 * 只是一个字符,并不具有其他含义(如通配符)。
求有多少字符串,在 {s, t1, t2, ..., tn} 中作为至少一个字符串的子串出现。
阅读全文
摘要:ION 每年规定一个命名串,要求每道题的名字必须是那一年的命名串的一个非空连续子串,且不能和前一年的任何一道题目的名字相同。
由于一些特殊的原因,小 A 得到了 ION2017 的命名串。
现在小 A 有 Q 次询问:每次给定 ION2017 的命名串和 ION2018 的命名串,求有几种题目的命名,使得……
阅读全文
摘要:现有一个字符串 S。
Tiffany 将从中划分出 na 个子串作为 A 类串,第 i 个 Ai = S[la[i]...ra[i]]。
Yazid 将从中划分出 nb 个子串作为 B 类串,第 i 个 Bi = S[lb[i]...rb[i]]。
给定 m 组支配关系 (x, y),表示第 x 的 A 类串支配第 y 的 B 类串。
请使用任意多个 A 类串拼接起来得到最长的目标串 T,满足对于两个相邻的 A 类串,前一个 A 类串支配的某个 B 类串是后一个 A 类串的前缀。
如果无限长,输出 -1。
阅读全文
摘要:给定一个长度为 n 的字符串 S,令 Ti 表示它从第 i 个字符开始的后缀。求:
sum((len(Ti) -lcp(Ti, Tj)+(len(Tj)-lcp(Ti, Tj)) (1 <= i < j <= n)
其中 lcp 是最长公共前缀。
阅读全文
摘要:给你一个字符串init,要求你支持两个操作
(1):在当前字符串的后面插入一个字符串
(2):询问字符串s在当前字符串中出现了几次?(作为连续子串)
你必须在线支持这些操作。
阅读全文
摘要:给定 M 个 01 串表示文本库,再给 N 个询问。
我们称一个子串是 “L - 熟悉” 的,当且仅当这个子串的长度大于等于 L 且是文本库中某一个串的子串。
每次询问给出一个 01 串 A,如果可以把这个串分成若干段子串,其中 “L0 - 熟悉” 的子串长度和 >= 90%*|A|,则称 L0 满足要求。输出满足要求的 L0 最大值。
阅读全文
摘要:求若干个仅由小写字母构成的字符串的最长公共子串。
阅读全文
摘要:给定一个由小写字母构成的字符串。
多次询问。询问它相异子串中字典序第 K 小的子串。
阅读全文
摘要:给定一个由小写字母构成的圆环形的字符串(即首字母和末字母是相连的)。
让你找到一个位置将这个圆环形的串断开成为一个序列形的串,使得这个字符串字典序最小。如果有多个,输出位置最靠前的那一个。
阅读全文
摘要:给定一个仅包含小写字母的字符串 S,对于每一个 i 满足 1 <= i <= |S|,求长度为 i 的,在 S 中出现次数最多的串出现了多少次?
阅读全文
摘要:求两个仅由小写字母构成的字符串的最长公共子串。
阅读全文
摘要:后缀自动机(Suffix Automaton,简称 SAM)是一个概念比较抽象,构造方法比较抽象,复杂度证明也比较抽象,让初学者体验感极差的字符串相关的算法。体验感差归差,但是关键是,这个东西应用倒是很广泛。它能够实现识别某一个串的后缀,或者是统计某一个串的子串出现次数,或者对多个串同时进行处理与匹配。更重要的是——这个算法是少见的线性算法,是一个时间性能非常优秀的算法。
阅读全文