后缀数组由 Manber & Myers 在 1990 年首先提出《Suffix arrays: a new method for on-line string searches》,用以替代后缀树,并且改进了存储空间的需求。后缀数组可以通过对后缀树做深度优先遍历(DFT: Depth First T...
分类:
编程语言 时间:
2014-10-30 18:46:00
阅读次数:
311
今天发现...比较流行的后缀数组模板里的排序居然不是“基数排序”,而是“计数排序”....难怪我理解了那么久的代码还是理解不到...原来一开始的思想就没对...想了一下,原来后缀数组模板里的确实是“基数排序”,只不过对每一位排序的实现它用的是“计数排序”,而不是我一直所想的桶排。怎么没人说说这几个排...
分类:
编程语言 时间:
2014-10-25 20:03:07
阅读次数:
178
后缀数组+RMQ是O(nlogn)的,会TLE.....标准解法好像是马拉车,O(n).... 1 #include "algorithm" 2 #include "cstdio" 3 #include "cstring" 4 using namespace std; 5 #define ...
分类:
其他好文 时间:
2014-10-25 18:44:09
阅读次数:
212
题目链接:http://poj.org/problem?id=1743题目大意:楼教主の男人八题orz。一篇钢琴谱,每个旋律的值都在1~88以内。琴谱的某段会变调,也就是说某段的数可以加减一个旋律范围的值。问这个谱子内最长不重叠的重复部分大小。解题思路:网上题解已经泛滥的题。很多细节都被先辈大神总结...
分类:
编程语言 时间:
2014-10-24 12:17:18
阅读次数:
239
1 #include "stdio.h" 2 #define maxn 20010 3 4 int wa[maxn],wb[maxn],wv[maxn],ws[maxn]; 5 int rank[maxn],height[maxn]; 6 int r[maxn],sa[maxn],ans[max.....
分类:
编程语言 时间:
2014-10-23 12:20:11
阅读次数:
194
题目链接:http://poj.org/problem?id=2217题目大意: 求两个串的最长公共子串,注意子串是连续的,而子序列可以不连续。解题思路:有个炒鸡快的O(n)的Manacher算法。不过只能求裸的最长公共和回文子串。后缀数组解法是这类问题的模板解法。对于n个串的最长公共子串,这要把这...
分类:
编程语言 时间:
2014-10-23 12:09:09
阅读次数:
252
把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询。复杂度O(nlogn)#include#include#include#include#include....
分类:
编程语言 时间:
2014-10-22 20:11:18
阅读次数:
270
题意:给出一串序列,求最长的theme长度(theme:完全重叠的子序列,如1 2 3和1 2 3 or 子序列中每个元素对应的差相等,如1 2 3和7 8 9)要是没有差相等这个条件那就好办多了,直接裸题。一开始想了个2B方法,后来发现真心2B啊蛤蛤蛤 1 for i=1 to 88 do 2 {...
分类:
编程语言 时间:
2014-10-22 17:23:37
阅读次数:
305
#include#include#include#include#include#include#include#include#include#include#include#include#define rep(i,n) for(int i=0;i=a;--i)#define PB push_b...
分类:
编程语言 时间:
2014-10-22 06:16:41
阅读次数:
202
在字符串匹配问题中经常出现这两个概念:文本(text):原文模板(pattern):关键词(相当于一个子串)任务:在text中找pattern常用算法:AC自动机:多个patternKMP:已知pattern,对pattern进行预处理Trie:也叫前缀树,常用于找字符串前缀后缀数组:已知text,...
分类:
编程语言 时间:
2014-10-21 22:59:57
阅读次数:
269