随笔分类 - 字符串
摘要:参考资料: OI-wiki ouuan的博客 1. 回文自动机介绍和结构 回文自动机,又称回文树,是一个能够存储字符串中所有回文子串的数据结构。 首先放一张图来感受回文自动机的总体结构。这是对字符串 \texttt{eertree}构建的回文自动机。 (eertree是回文自动机最初提出时的名字
阅读全文
摘要:参考资料: ouuan的博客 OI-wiki 如果我们只需要找一个模式串在另一个文本串中出现的位置和次数,使用KMP算法即可在线性时间内解决问题。 但是如果模式串的数量不止一个,甚至模式串有包含关系时,我们就需要AC自动机了。 奇怪的知识:AC自动机全称Aho–Corasick算法,是两个人名的组合
阅读全文
摘要:参考资料1 参考资料2 0. 约定 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s_0, s_1, \cdots, s_{|s|-1}。 子串 s_l, s_{l+1}, \cdots, s_{r-1}, s_r 简记为
阅读全文
摘要:参考资料1 参考资料2 前置知识:前缀函数,Border的简单认识 约定: 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s_0, s_1, \cdots, s_{|s|-1}。 子串 $s_l, s_{l+1}, \cdots
阅读全文
摘要:参考资料 约定: 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s_0, s_1, \cdots, s_{|s|-1}。 子串 s_l, s_{l+1}, \cdots, s_{r-1}, s_r 简记为 s[l:r]。
阅读全文
摘要:前置芝士:扩展KMP(本人认为扩展KMP反而和manacher更像 0. 约定 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s_0, s_1, \cdots, s_{|s|-1}。 子串 $s_l, s_{l+1}, \cdo
阅读全文
摘要:字符串算法果然玄学=_= 参考资料: OI Wiki:前缀函数与KMP算法 OI Wiki:Z函数(扩展KMP) 0. 约定 字符串的下标从 0 开始。|s| 表示字符串 s 的长度。 对于字符串 s,记其每一个字符分别为 s_0, s_1, \cdots, s_{|s|-1}。
阅读全文
摘要:(水) 一般来说,我们使用BKDRhash还进行字符串的哈希操作。 具体地,我们将字符串看成一个大进制数,然后取模就行了。 code: int hash(string s) { int ans=0,l=s.length(); for(int i=0;i<l;i++)ans=(ans*base%mod
阅读全文
摘要:字符串算法都好抽象啊…… 1. 字符串哈希 int hash(string s) { int ans=0,l=s.length(); for(int i=0;i<l;i++)ans=(ans*base%mod+(s[i]-'0'+1))%mod; return ans; } 2. 前缀函数 void
阅读全文
