摘要: 1、给n个只含0、1的串,求出这些串中前缀的最大和。例1:0000000110101010结果:6(第1、2串共有000,3+3=6)例2:0101001010101010101011010010101010101010结果:20(第1串的长度为20)2、用trie树(字典树)来做,插入的时候统计前... 阅读全文
posted @ 2015-11-05 20:25 gongpixin 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 1、找出一个最长的回文子串,要求中间的值最大,然后向两侧递减。2、判断条件改为:Ma[i+Mp[i]]==Ma[i-Mp[i]]&&Ma[i-Mp[i]]#include#includeusing namespace std;//求最长回文子串const int MAXN=100005;int Ma... 阅读全文
posted @ 2015-11-05 19:23 gongpixin 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.felix021.com/blog/read.php?2040 首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步减少 阅读全文
posted @ 2015-11-05 18:45 gongpixin 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1、kmp产生的next数组: 最小循环节(长度)=len-next[len]; 证明: k m x j i 由上,next【i】=j,两段红色的字符串相等(两个字符串完全相等),s[k....j]==s[m....i] 设s[x...j]=s[j....i](xj=ji) 则可得,以下简写字符串表 阅读全文
posted @ 2015-11-05 13:02 gongpixin 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 1、赤裸裸的最小循环节2、3、#include#include#includeusing namespace std;#define MAXN 1000005//字符串长度int _next[MAXN];void GetNext(char t[]){//求next数组 int j,k,len;... 阅读全文
posted @ 2015-11-05 10:14 gongpixin 阅读(269) 评论(0) 推荐(0) 编辑