码迷,mamicode.com
首页 >  
搜索关键字:公共前缀    ( 506个结果
poj 2774 Long Long Message,后缀数组,求最长公共子串 hdu1403
题意:给出两个字符串,求最长公共子串的长度。 题解:首先将两个字符串连在一起,并在中间加一个特殊字符(字串中不存在的)分割,然后两个串的最长公共字串就变成了所有后缀的最长公共前缀。这时就要用到height数组,因为任意两个后缀的公共前缀必定是某些height值中的最小值,而这个值如果最大则一定是height中的最大值。在此题中还要注意height最大一定要在两个值所代表的后缀分属不同的字...
分类:其他好文   时间:2014-08-24 10:19:22    阅读次数:184
Trie树
Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。 下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩子结点,因为总...
分类:其他好文   时间:2014-08-22 10:46:36    阅读次数:213
UVA 12338 - Anti-Rhyme Pairs(后缀数组+RMQ)
UVA 12338 - Anti-Rhyme Pairs 题目链接 题意:给定一些字符串,每次询问求出两个字符串的最长公共前缀的长度 思路:把字符串排序,就能求出height和rank数组,然后利用RMQ查询即可 代码: #include #include #include #include #include using namespace std; co...
分类:其他好文   时间:2014-08-20 01:24:35    阅读次数:300
POJ 1226后缀数组:求出现或反转后出现在每个字符串中的最长子串
思路:这题是论文里的最后一道练习题了,不过最后一题竟然挺水的。 因为求的是未反转或者反转后,最长公共子串。 刚开始还真不知道怎么构建连接成一个字符串,因为需要有反转嘛! 但是其实挺简单的,把未反转的和反转后的字符串都连起来,中间用未出现过的字符隔开就行了!然后未反转的和反转的在同一组。 二分枚举最长的公共前缀长度,然后统计看看这个最长的长度在不在所有的组里,如果在就符合…… #inclu...
分类:其他好文   时间:2014-08-15 17:55:29    阅读次数:277
SPOJ 220后缀数组:求每个字符串至少出现两次且不重叠的最长子串
思路:也是n个串连接成一个串,中间用没出现过的字符隔开,然后求后缀数组。 因为是不重叠的,所以和POJ 1743判断一样,只不过这里是多个串,每个串都要判断里面的最长公共前缀有没有重叠,所以用数组存下来就得了,然后再判断。 #include #include #include #include #include #include #include #include #include #defi...
分类:其他好文   时间:2014-08-15 16:02:09    阅读次数:194
POJ 3294 后缀数组:求不小于k个字符串中的最长子串
思路:先把所有的串连接成一个串,串写串之前用没出现过的字符隔开,然后求后缀;对height数组分组二分求得最长的公共前缀,公共前缀所在的串一定要是不同的,不然就不是所有串的公共前缀了,然后记下下标和长度即可。 刚开始理解错题意,然后不知道怎么写,然后看别人题解也不知道怎么意思,后面看了好久才知道题目意思理解错了。 时间四千多ms,别人才一百多ms,不知道别人怎么做的…… #include #...
分类:其他好文   时间:2014-08-15 14:42:29    阅读次数:277
POJ 2774 后缀数组:求最长公共子串
思路:其实很简单,就是两个字符串连接起来,中间用个特殊字符隔开,然后用后缀数组求最长公共前缀,然后不同在两个串中,并且最长的就是最长公共子串了。 注意的是:用第一个字符串来判断是不是在同一个字符中,刚开始用了第二个字符的长度来判断WA了2发才发现。 #include #include #include #include #include #include #include #include #...
分类:其他好文   时间:2014-08-15 00:02:56    阅读次数:248
URAL 1297 后缀数组:求最长回文子串
思路:这题下午搞了然后一直WA,后面就看了Discuss,里面有个数组:ABCDEFDCBA,这个我输出ABCD,所以错了。 然后才知道自己写的后缀数组对这个回文子串有bug,然后就不知道怎么改了。 然后看题解,里面都是用RMQ先预处理任意两个后缀的最长公共前缀,因为不太知道这个,所以又看了一下午,嘛嘛…… 然后理解RMQ和后缀一起用的时候才发现其实这里不用RMQ也可以,只要特殊处理一下上面...
分类:其他好文   时间:2014-08-13 22:23:47    阅读次数:261
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
JSOI2008 火星人prefix
1014: [JSOI2008]火星人prefixTime Limit:10 SecMemory Limit:162 MBSubmit:2918Solved:866[Submit][Status]Description火星人最近研究了一种操作:求一个字串两个后缀的公共前缀。比方说,有这样一个字符串:...
分类:Web程序   时间:2014-08-06 01:50:00    阅读次数:317
506条   上一页 1 ... 46 47 48 49 50 51 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!