后缀数组(Suffix Array,SA)是处理字符串的有力工具。它比后缀树更易实现,占用空间更少,并且同样可以解决千变万化的字符串问题 首先推荐罗穗骞的论文(网上搜一下就能搜到),里面对后缀数组的定义、实现和应用都做了详细的阐述 然而不幸的是罗神犇的代码简直魔性,蒟蒻表示这代码压的根本看不懂啊…… ...
分类:
编程语言 时间:
2016-04-27 12:13:10
阅读次数:
310
由于蒟蒻azui前段时间忙着准备省选,并在省选中成功闷声滚大粗,博客停更了好久。。...
分类:
编程语言 时间:
2016-04-26 21:36:39
阅读次数:
328
题目大意 给出从一个字符环,求从哪个位置断开后的字符串的字典序最小。 题解 不多说,一条模板题。就是后缀数组(或后缀树)。 先把字符串倍长,后缀数组预处理(请看相关资料),扫一遍SA数组,找符合条件的即可。 代码 ...
分类:
其他好文 时间:
2016-03-27 12:19:07
阅读次数:
201
后缀数组是处理字符串的一种常用算法,是后缀树的一种精巧的替代品,它比后缀树更容易编程实现,且效率和后缀树相当。后缀数组定义子串: 字符串S的子串r[i, j](i using namespace std;#define MAX_ARRAY_SIZE 1000#define LETTERS 100in...
分类:
编程语言 时间:
2015-09-21 23:45:13
阅读次数:
282
用后缀树统计出出现了x次的本质不同的子串的个数,最后再乘以x,得到一个多项式。这个多项式常数项为0,但是一次项不为0。于是把整个多项式除以一次项,通过多项式求ln和多项式求exp求出它的幂。最后再把除掉的项乘回来即可,时间复杂度$O(n\log n)$。#include#includetypedef...
分类:
其他好文 时间:
2015-09-08 10:48:20
阅读次数:
199
// 本文部分内容参照刘汝佳《算法竞赛入门经典训练指南》,特此说明。1、前言 趁着这几天上午,把后缀数组大致看完了。这个东西本身的概念可能没太大理解问题,但是它所延伸出来的知识很复杂,很多,还有它的两个兄弟——后缀树,后缀自动机,编起来都不是盖的。2、概念 前面曾经提到过Aho-Corasick.....
分类:
编程语言 时间:
2015-08-20 01:11:26
阅读次数:
176
题目大意:给你N(2-4000)个字符串,求出来他们的共同子串分析:因为上次就说了再出现这种题就不用那种暴力的做法了,于是看了一些别的知识,也就是后缀树,把一个字符串的所有的后缀全部都加入字典树,然后用别的串去匹配,这样匹配的时候速度那是飕飕的啊,不过第一次我把前N-1个串的所有前缀搞进了字典树里面...
分类:
其他好文 时间:
2015-08-19 10:40:24
阅读次数:
140
ACM 所有算法
数据结构
栈,队列,链表
哈希表,哈希数组
堆,优先队列
双端队列
可并堆
左偏堆
二叉查找树
Treap
伸展树
并查集
集合计数问题
二分图的识别
平衡二叉树
二叉排序树
线段树
一维线段树
二维线段树
树状数组
一维树状数组
N维树状数组
字典树
后缀数组,后缀树
块状链表
哈夫曼树
桶,跳跃表...
分类:
编程语言 时间:
2015-08-11 16:13:16
阅读次数:
357
(1)字典树(Trie树) Trie是个简单但实用的数据结构,通常用于实现字典查询。我们做即时响应用户输入的AJAX搜索框时,就是Trie开始。本质上,Trie是一颗存储多个字符串的树。相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串。和普通树不同的地方是,....
分类:
其他好文 时间:
2015-06-24 22:29:16
阅读次数:
197
这里用第一个字符串构建完成后缀自动机以后不断用第二个字符串从左往右沿着后缀自动机往前走,如能找到,那么当前匹配配数加1如果找不到,那么就不断沿着后缀树不断往前找到所能匹配到当前字符的最大长度,然后将cur节点转移到当前节点即可,再把答案加1记住不断更新所能得到的最大值 1 #include 2 #....
分类:
其他好文 时间:
2015-06-19 01:14:35
阅读次数:
222