码迷,mamicode.com
首页 >  
搜索关键字:后缀数组    ( 1340个结果
[hdu 4622]Reincarnation
这道题是妥妥的后缀自动机裸题学了后缀自动机后,我居然感觉这尼玛果然还是后缀数组最难了有木有!后缀自动机我的理解就是一个动态的存后缀的 AC 自动机以为后缀的特殊性,我们可以在上一次插入的节点后直接插入新的节点,然后沿着 fail(pre) 指针把一些该更新的更新掉即可果然是好写好用喵~如何统计 [i...
分类:其他好文   时间:2014-08-14 20:03:59    阅读次数:221
后缀数组(基数排序)的具体分析
我看后缀数组,思想很容易懂,但是基数排序那边我确实理解了很久才理解,现在我写一份自己可以看懂的具体分析。第一步,首先将所有的位置上的值装入数组中,并记录排名为i的数为sa[i],第i个数的排名为rank[i].下面就要进行logn次的倍增操作,我们定义k为当前倍增长度基数排序,痛苦ing首先将每一对...
分类:其他好文   时间:2014-08-14 10:39:18    阅读次数:243
URAL 1297 后缀数组:求最长回文子串
思路:这题下午搞了然后一直WA,后面就看了Discuss,里面有个数组:ABCDEFDCBA,这个我输出ABCD,所以错了。 然后才知道自己写的后缀数组对这个回文子串有bug,然后就不知道怎么改了。 然后看题解,里面都是用RMQ先预处理任意两个后缀的最长公共前缀,因为不太知道这个,所以又看了一下午,嘛嘛…… 然后理解RMQ和后缀一起用的时候才发现其实这里不用RMQ也可以,只要特殊处理一下上面...
分类:其他好文   时间:2014-08-13 22:23:47    阅读次数:261
POJ 3415
一道字符串的题。求两个字符串的长度大于K的子串中,相同的有多少对。知道了要用到后缀数组,可是想了好久也没想好怎么使用。最后看了一下论文,提到了两个字符串可以合并,中间加上一个特殊字符就可以了。|虽然这样还是写了好长时间啊。。。首先是合并,然后建立后缀数组,求出sa[],height[],然后在进行加...
分类:其他好文   时间:2014-08-13 21:52:57    阅读次数:267
SPOJ 694、705 后缀数组:求不同子串
思路:这题和wikioi 1306一样,也都是求的不同子串的个数,但是wikioi 时间比较长,然后用Trie树就过了。但是我用那个代码提交这题的时候就WA了,比较晕……因为这题有多组样例,所以超了点时间。 所以这题当然就是用后缀数组做的啦! 算法分析: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffi...
分类:其他好文   时间:2014-08-13 19:09:17    阅读次数:221
hdu 4691 Front compression (后缀数组)
题目大意: 介绍了一种压缩文本的方式,问压缩前后的文本长度。 思路分析: 后缀数组跑模板然后考虑两次l r之间的lcp。 然后减掉重复的长度。 注意ans2的累加。 #include #include #include #include #include #define maxn 200005 using namespace std; typedef lon...
分类:其他好文   时间:2014-08-13 19:03:07    阅读次数:178
POJ 1743 后缀数组:求最长不重叠子串
这题弄了好久,WA了数十发,现在还有个例子没过,可却A了,POJ 的数组也太弱了。 10 1 1 1 1 1 1 1 1 1 1 这组数据如果没有那个n-1 刚开始没明白为什么要判断当前的sa[i]-之前的sa[j]的绝对值>=mid就行,height[i]是rank[sa[i-1])和rank[sa[i])的最长公共前缀呀,为什么和之前的比较呢? 先做后缀数组的其他题,等熟练运用后...
分类:其他好文   时间:2014-08-13 13:12:46    阅读次数:228
poj 2299 树状数组求逆序数+离散化
http://poj.org/problem?id=2299 最初做离散化的时候没太确定但是写完发现对的---因为后缀数组学的时候,,这种思维习惯了吧 1、初始化as[i]=i;对as数组按照num[]的大小间接排序 2、bs[as[i]]=i;现在bs数组就是num[]数组的离散化后的结果 3、注意,树状数组中lowbit(i)  i是不可以为0的,0&(-0)=0,死循环... ...
分类:其他好文   时间:2014-08-13 03:36:15    阅读次数:234
Life Forms
poj3294:http://poj.org/problem?id=3294题意:就是求n个串的中一个最大的子串,这个子串在超过n/2的串中出现。题解:这是一道好题。首先一种解法就是用后缀数组来搞,首先把n个串拼接起来,然后,每个串后面加上一个特殊的额字符,然后求后缀数组以及h数组,然后一个很经典的...
分类:其他好文   时间:2014-08-12 18:40:44    阅读次数:206
spoj694--Distinct Substrings
个人第一道后缀数组题目。对于每一个后缀suffix(i),都有len-sa[i]个前缀(也即有len-sa[i]个不同的字符串),其中与排名前一位的后缀有height[i]个共同的前缀,最后所得到的新的字符串个数为len-sa[i]-height[i].因此这题只要求出sa以及height即可求得答...
分类:其他好文   时间:2014-08-12 18:14:44    阅读次数:231
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!