![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
文章平均质量分 70
a_crazy_czy
日后,尽量别叫今天的泪白流。
展开
-
后缀数组复习小记
前言复习小记差不多是写给自己看的,步骤都比较简略,主要总结要点。初学者的话还是去看罗穗骞的论文吧。 这个东西我初二就会了23333333DA\mathrm{DA}算法构造DA\mathrm{DA}就是倍增算法。 每一层都有长度相等的一二关键字。 SASA就是排名第ii的后缀的开始位置,rankrank就是第ii个后缀的排名。 数组xx代表某后缀在上一层的rankrank,数组yy代表按第二关原创 2016-02-01 15:05:29 · 981 阅读 · 0 评论 -
[GDOI2013][JZOJ3277]哈希和
题目大意设字符串strstr长度为ll,定义字符串ss的哈希值为 hash(str)=∑i=0l−1c(stri)×26l−1−i hash(str)=\sum_{i=0}^{l-1}c(str_i)\times26^{l-1-i} 其中c(stri)c(str_i)表示字符stristr_i的ASCII\mathrm{ASCII}码与字符aa的ASCII\mathrm{ASCII}码的差值。原创 2016-02-02 17:30:43 · 723 阅读 · 0 评论 -
[TJOI&HEOI2016]str/[JZOJ4614]字符串
题目大意给出只包含小写拉丁字母的字符串SS,有mm个询问,给出(a,b,c,d)(a,b,c,d),求属于区间[a,b][a,b]的所有子串与S[c..d]S[c..d]的LCP\mathrm{LCP}长度最大值。1≤|S|,m≤1051\le|S|,m\le10^5题目分析显然可以使用后缀数组,我们要求的是 maxi∈[a,b]{min(d−c+1,b−i+1,LCP(sufi,sufc))}原创 2016-07-12 19:17:42 · 723 阅读 · 0 评论 -
[CF232D]Fence
题目大意 有一个nn个数的数组hh。 有qq个询问,形如l0,r0l_0,r_0。 每个询问查询满足一下33个条件的区间[l,r][l,r]总共有多少个? ∙[l,r]∩[l0,r0]=∅\bullet[l,r]\cap[l_0,r_0]=\varnothing ∙r−l=r0−l0\bullet r-l=r_0-l_0 ∙∀i∈[0,r−l],hl0+i+hl+i=hl0+hl\bu原创 2016-07-04 21:16:13 · 514 阅读 · 0 评论 -
[HDU4029]Distinct Sub-matrix/[JZOJ4683]矩阵
题目大意给定一个n×mn\times m的矩阵,每个位置有一个大写字母。请求出这个矩阵本质不同的子矩阵的个数(参考字符串本质不同的子串)。 1≤n,m≤1101\le n,m\le 110题目分析一个很naivenaive的想法,暴力枚举,然后使用多哈希O(1)\mathrm O(1)判断,时间复杂度O(n4)\mathrm O(n^4)。 然而这题我们可以使用一种更高的姿势水平玩哈希。枚举子矩原创 2016-08-14 22:33:18 · 879 阅读 · 0 评论 -
[JZOJ5084]子串
题目大意给定一个长度为nn的字符串ss,你需要计算 ∑i=1n∑j=1n∑k=in∑l=jnLCP(si..k,sj..l) \sum_{i=1}^n\sum_{j=1}^n\sum_{k=i}^n\sum_{l=j}^n\mathrm{LCP}\left(s_{i..k},s_{j..l}\right) 答案对998244353998244353取模。1≤n≤5000001\le n\le5原创 2017-04-24 17:08:47 · 541 阅读 · 0 评论 -
[HackerRank-World CodeSprint 6]Functional Palindromes
题目大意在字符串pp上定义函数f(p)f(p),假设字符串的长度是ll,那么 f(p)=∑i=1lpial−i f(p)=\sum_{i=1}^lp_ia^{l-i} 其中pip_i表示第ii个字符的ASCII码。 现在给定一个长度为nn的字符串ss,有qq个询问,每次询问字典序排名为kthkth的回文子串的ff函数值。 两个本质相同,起始位置不同的回文子串视作两个不同的串。1≤n,q≤1原创 2017-04-27 17:45:29 · 586 阅读 · 0 评论