题意: 输入一个串,输出里面最长的回文子串。
做法:后缀数组 比如 输入abc 。 那构造串 abc#cba。 然后用后缀数组模版。 初始化RMQ后,枚举任意一个在#前面的点,奇回文和偶回文都各自考虑下,
用lcp,找出后缀i,j的最长公共前缀。得到的最大的就是最长回文子串了。...
分类:
编程语言 时间:
2015-03-07 21:24:05
阅读次数:
276
今天就这题照着别人的代码学了字典树...
这篇论文:http://wenku.baidu.com/view/d2ba836fb84ae45c3b358ca8.html介绍了各种字典树的运用,长了好多姿势,很有启发性
归纳一下字典树的应用:
检索(主要功能)
串排序
在DP中减少无效的状态转移
最长公共前缀问题(LCP)转化成LCA
tire+KMP 构成AC自动机数据结构
...
分类:
其他好文 时间:
2015-02-28 08:57:53
阅读次数:
165
求同一字符串的两个后缀的最长公共前缀。将字符串按位置放到Splay中维护(每个节点还维护一下该子树的hash),然后二分前缀的长度,用splay计算出指定范围的hash,按hash是否相等来判断是否相同。一开始是将字符串看成26进制,加上unsigned long long的自然溢出来计算哈希,但这...
分类:
其他好文 时间:
2015-02-20 00:06:11
阅读次数:
240
分析:实际上,我们用next[i]表示 T[i-n] 和T[1-n]的最长公共前缀,那么a[i]=next[i] +next[i+1]...... +next[n]; 最长公共前缀(lcp)有3种方法 : 扩展kmp ,hash 和后缀数组 。
方法一 :扩展kmp
//#pragma comment(linker, "/STACK:102400000,102400000")
...
分类:
其他好文 时间:
2015-01-30 22:45:56
阅读次数:
318
Linux下3G脚本拨号上网(2010-7-513:08) 既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层...
分类:
系统相关 时间:
2015-01-28 11:07:29
阅读次数:
704
后缀数组的用处:快速求出两个后缀Suffix(i), Suffix(j)的最长公共前缀(LCP, Longest Common Perfix)以下一张图片可谓简洁明了。下面贴上模板1.求最长重复子串,可以重叠void solve_duplicate_substr(int n){//duplicate...
分类:
编程语言 时间:
2015-01-25 15:04:43
阅读次数:
311
题目大意:给你一串字符串,让你求出来它存在的最长连续的回文串。
解题思路:先把字符串逆序加到数组中,然后用后缀数组求解。两种方法:1,枚举排名,直接比较rank相同的字符串的位置差是不是len。如果是的话,就记录求解;2,枚举地址,求第i地址与第2*len-i+1的lcp的最大值。
PS:需要注意如果多解输出靠前的字符串。
两种写法写在了一起,分别是Del,和Del1函数。
1...
分类:
编程语言 时间:
2015-01-23 21:35:50
阅读次数:
378
题目大意:给定一个字符串,多次插入一个字符和询问某两个后缀的LCP
Splay+Hash。同1014
这逗比的询问。。。。。。
#include
#include
#include
#include
#define M 50500
#define BASE 151
using namespace std;
typedef unsigned long long ll;
struct a...
分类:
其他好文 时间:
2015-01-22 11:08:55
阅读次数:
190
题目大意:给出一个字符串,给出一些询问,每次问几个后缀两两之间的LCP之和。
思路:保证Σask数量级在O(n)上,可以考虑一下虚树了。建立虚树之后,这题就和差异那个题一样了。但是必须要打时间戳啊,要不死的很惨的啊。。
CODE:
#include
#include
#include
#include
#define MAX 1000010
using names...
分类:
其他好文 时间:
2015-01-19 19:12:37
阅读次数:
151
题目大意:求所有后缀长度减去LCP长度的二倍。
思路:之前用后缀数组写过,但是做法并不是很直观。现在学了后缀树再来写一次,这次思路就很清晰了。
首先我们把字符串按照倒序插入到后缀树中。形成的后缀树有一个很好的性质,连个后缀节点的LCA就是这两个后缀的LCP的位置,LCA的len值自然就是两个后缀的LCP。
建好树之后,进行一次树形DP,统计出来每两个后缀的LCP长度,计入总答案。
...
分类:
其他好文 时间:
2015-01-17 18:06:18
阅读次数:
221