后缀数组
文章平均质量分 76
thy_asdf
我也不知道说什么...
展开
-
后缀数组入门题——2323后缀排序
题目大意:给定一个字符串,输出排名为1到n的后缀的起始位置思路:按后缀数组的sa的定义,直接输出即可code:#include#includeusing namespace std;const int maxl=200000;int rank[maxl+10],sa[maxl+10],n,sum[maxl+10],trank[maxl+10],tsa[maxl+10];原创 2014-12-03 11:49:26 · 754 阅读 · 0 评论 -
uva10829 L-Gap Substrings
传送门:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1770思路:这题和上一题SPOJ687的思路一样,也是枚举长度,再对于i和i+j+L向前向后匹配,但是这一题只能在后面接一个反串。#include#incl原创 2015-08-18 15:31:29 · 588 阅读 · 0 评论 -
bzoj4199&uoj131: [Noi2015]品酒大会
传送门:http://uoj.ac/problem/131思路:先求出height,然后根据排名重新给后缀标号,按height从大到小做,每次合并i和i-1,用并查集维护,更新答案。#include#include#include#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)const int maxn=300010;u原创 2015-08-16 16:23:00 · 1778 阅读 · 0 评论 -
spoj687 REPEATS
传送门:http://www.spoj.com/problems/REPEATS/思路:又是一道论文题。论文上是这么说的这题用到了枚举长度的方法,往后匹配我们只要看两个后缀的LCP即可,而往前匹配,一个显然的做法是把串反过来,接到后面看对应的后缀的LCP。实际上并不需要这样,我们只需要看它还差几个字符就可以是循环次数加1,那我们就往前移这么多位,看这两个后缀的LCP长度是否足够原创 2015-08-17 11:50:36 · 884 阅读 · 0 评论 -
codeforces 232D. Fence
传送门:http://codeforces.com/problemset/problem/232/D思路:首先就是差分,设d[i]=a[i+1]-a[i];然后题目的”匹配"就可以转化为差分数组每一位的和为0也就是这段区间取相反数之后可以与原区间匹配。这就可以转化为字符串问题。设当前询问为(x,y)把整个串取相反数,再复制到后面,用后缀数组向上向下二分出可行区间(lcp(s原创 2015-08-14 18:02:35 · 581 阅读 · 0 评论 -
bzoj1031: [JSOI2007]字符加密Cipher
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1031思路:非常水的后缀数组,把串复制一遍到后面,后缀排序即可。#include#include#includeconst int maxn=200010;using namespace std;int n,t1[maxn],t2[maxn],sa[maxn],ran原创 2015-08-13 17:06:39 · 592 阅读 · 0 评论 -
bzoj3676: [Apio2014]回文串
传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3676思路:首先要知道一个结论,本质不同的回文串的个数是O(n)的。从manacher的过程就可以看出来,使最远边界扩展的回文串才是与之前本质不同的,边界只会扩展到n,所以个数是O(n)的然后对于每个本质不同的字符串,在后缀数组里向上向下二分,找出它的出现次数即可得到答案。原创 2015-08-13 17:16:57 · 781 阅读 · 0 评论 -
[Usaco2006 Dec]Milk Patterns
Description农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠。我们称之为一个“模式”。 John的牛奶按质量可以被赋予一个0到1000000之间的数。并且John记录了N(1牛奶质量值。他想知道最长的出现了至少K(2比如1 2 3 2 3 2 3 1 中 2 3 2 3出现了两次原创 2014-12-03 17:05:28 · 473 阅读 · 0 评论 -
Pku3080 Blue Jeans
Pku3080 Blue Jeans Time Limit:1000MS Memory Limit:265536KTotal Submit:4 Accepted:3 DescriptionThe Genographic Project is a research partnership between IBM and The National Geographic Soc原创 2014-12-03 20:46:25 · 487 阅读 · 0 评论 -
pku1734 Musical Theme
Description我们用N(1 <= N <=5000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,每个数表示钢琴上的一个键。很不幸这种表示旋律的方法忽略了音符的时值,但这项编程任务是关于音高的,与时值无关。许多作曲家围绕一个重复出现的“主题”来构建乐曲。在我们的乐曲表示法中,“主题”是整个音符序列的一个子序列,它需要满足如下条件: 长度至少原创 2014-12-03 20:27:02 · 369 阅读 · 0 评论 -
最长可重叠的重复子串
题目大意:给定一个字符串,求它的最长可重叠的重复子串的长度思路:求出height数组之后,输出最大值即可。因为最长可重叠的重复子串一定是在相邻两个后缀的最长公共前缀,即height,而要求最大值,输出height最大值即可#include#include#define max(a,b) a>b?a:busing namespace std;const int maxl=400000;原创 2014-12-03 11:59:06 · 1275 阅读 · 0 评论 -
APIO2015&2014题解
传送门:似乎uoj都有思路:APIO2015:巴厘岛的雕塑:看到位运算,又要求结果最小,最外层肯定是个从高位到低位的按位贪心这里有两个部分分,task1:Ntask2:N先考虑task1令sum[i]表示雕塑权值的前缀和假设我们考虑到了第bit位那么我们怎么知道在前面位数满足要求的前提下,当前位能否是0DP即可设f[i][j]表示前i原创 2016-04-26 10:03:20 · 1506 阅读 · 0 评论