Manacher算法求回文子串,时间复杂度为O(n)
分类:
其他好文 时间:
2014-08-27 20:16:58
阅读次数:
211
这题说的是给了长度为n的字符串, 将这个字符串分成k个子串,求使得这个k尽量的小的最小值,当这个长度为n的字符串本身就是回文串的时候,那么k为1。考虑第i个字符和前i-1个中的第j个搭配形成回文子串,开一个数组标记一下就可以知道了这个从j到i是否是回文子串然后,每次取最小,我们发现这样是一个最优的子...
分类:
其他好文 时间:
2014-08-25 20:41:14
阅读次数:
144
UVA 257 - Palinwords
题目链接
题意:输出一个文本里面的palinword,palinword的定义为,包含两个不同的回文子串,并且要求回文子串不能互相包含
思路:对于每个单词判断一次,由于不能互相包含,对于每个位置,其实就只要找长度3和4的情况即可,这样复杂度为O(n),至于判断重复的,就用hash即可
代码:
#include
#include ...
分类:
其他好文 时间:
2014-08-20 14:09:02
阅读次数:
190
时间限制:1000ms单点时限:1000ms内存限制:64MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中...
分类:
其他好文 时间:
2014-08-20 01:18:05
阅读次数:
306
多敲几个模板题,加深一下对Manacher算法的理解。这道题给的时间限制15s,是我见过的最长的时间的了。看来是为了让一些比较朴素的求最大回文子串的算法也能A过去Manacher算法毕竟给力,运行时间200+MS 1 //#define LOCAL 2 #include 3 #include 4.....
分类:
其他好文 时间:
2014-08-18 21:51:12
阅读次数:
236
变形的求最大回文子串,要求输出两个端点。我觉得把'b'定义为真正的'a'是件很无聊的事,因为这并不会影响到最大回文子串的长度和位置,只是在输出的时候设置了一些不必要的障碍。另外要注意一下原字符串s1中的字符在预处理以后的字符串s2中对应的坐标关系,这样输出的时候就可以照着这个关系转化。轻松1A,嘿嘿...
分类:
其他好文 时间:
2014-08-18 20:25:42
阅读次数:
180
本题就是求最长的回文子串。
字符串超长,不过限时却是也很长的15秒,最长的限时之一题目了,如果限时短点的话,估计能过的人不多。
使用Mancher算法是可以秒杀的。
模板式的Manacher算法:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-14 14:12:18
阅读次数:
139
思路:这题下午搞了然后一直WA,后面就看了Discuss,里面有个数组:ABCDEFDCBA,这个我输出ABCD,所以错了。
然后才知道自己写的后缀数组对这个回文子串有bug,然后就不知道怎么改了。
然后看题解,里面都是用RMQ先预处理任意两个后缀的最长公共前缀,因为不太知道这个,所以又看了一下午,嘛嘛……
然后理解RMQ和后缀一起用的时候才发现其实这里不用RMQ也可以,只要特殊处理一下上面...
分类:
其他好文 时间:
2014-08-13 22:23:47
阅读次数:
261
#1032 : 最长回文子串
时间限制:1000ms
单点时限:1000ms
内存限制:64MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符...
分类:
其他好文 时间:
2014-08-09 00:14:49
阅读次数:
241
Manacher是一个可以在O(n)的时间内求出一个长度为n的字符串的算法。以为回文子串有偶数长度,也有奇数长度,分别处理会很不方便。所以在每两个字符中间插入一个无关字符,如‘#’,这样所有的回文子串都变为奇数长度。两端在添加不同的无关字符防止匹配时越界。如: abba 变成 $#a#b#b#a#&...
分类:
其他好文 时间:
2014-08-08 21:12:56
阅读次数:
299