
字符串---后缀数组
文章平均质量分 85
forezxl
水君一枚
展开
-
后缀数组简介(洛谷P3809)
推荐这篇Blog(写的比我详细多了Orz) 算法用途 在许多场合可以替代后缀树,也可以和其他算法结合搞许多事情,是一个很强大的东东。 各种东西 求后缀数组的整个过程其实就是基数排序,所以建议先学会基数排序。 ① 后缀:即对于字符串sss,s[i]−s[n]s[i]−s[n]s[i]-s[n]即为s的一个后缀(i∈[1,n]i∈[1,n]i\in[1,n])。 ② rankr...原创 2017-10-07 21:23:19 · 521 阅读 · 0 评论 -
BZOJ1031 [JSOI2007] 字符加密Cipher(洛谷P4051)
后缀数组 BZOJ题目传送门 洛谷题目传送门 题意很简单,就是给字符串排序然后依次输出最后一个字符。 而对于字符串排序我们有后缀数组这个东西。 因为要接环,于是把s*2,然后构造后缀数组即可。 输出时过滤位置≥原字符串长度的字符(n)(即长度≤n/2)。 因为要输出最后一个,把位置加上原字符串长度即可 代码: #include<cstdio> #include<...原创 2017-10-08 21:22:37 · 307 阅读 · 0 评论 -
BZOJ2946: [Poi2000]公共串
后缀数组 二分 题目传送门 和HDU4080一个套路。 先把这几个串接起来,串和串之间用一个符号隔开。二分答案l,当连续一段h[i]的长度都≥l,且sa[i]分布在所有串中就满足。 代码: #include<cstdio> #include<cstring> #include<algorithm> #define N 10010 using names...原创 2018-03-08 20:11:24 · 221 阅读 · 0 评论 -
HDU4080 Stammering Aliens
后缀数组 二分 题目传送门 题目大意:给你一个数m和一个字符串s,求长度最大的子串ss满足它在s中的出现次数≥≥\geqm。输出ss的长度及最后出现的位置。 首先二分答案,设长度为x,预处理出h数组后,统计连续一段h[i]≥h[i]≥h[i]\gex的i的个数。如果个数≥≥\gem就满足了,并记录最后一个sa[i]。 还要特判一下m=1的情况。 代码: #include<cs...原创 2018-03-05 17:55:42 · 373 阅读 · 0 评论