码迷,mamicode.com
首页 >  
搜索关键字:后缀数组    ( 1340个结果
后缀数组suffix array
suffix array...
分类:其他好文   时间:2014-08-12 10:24:24    阅读次数:233
后缀数组
好吧 由于我是个蒟蒻 c++不常用 特别是字符串渣成翔……pascal还好说 c++么……表示第一次用C++搞这个哎 ToT 顺便贴一发后缀数组的实现本节主要介绍后缀数组的两种实现方法: 倍增算法和 3 DC3 算法,并对两种算法进行了比较。可能有的读者会认为这两种算法难以理解,即使理解了也难以用程...
分类:其他好文   时间:2014-08-10 23:55:01    阅读次数:446
poj 2774 最长公共子串--字符串hash或者后缀数组或者后缀自动机
http://poj.org/problem?id=2774 想用后缀数组的看这里:http://blog.csdn.net/u011026968/article/details/22801015 本文主要讲下怎么hash去找 开始的时候写的是O(n^2 logn)算法 果断超时。。。虽然也用了二分的,, 代码如下: //hash+二分 #include #include #incl...
分类:其他好文   时间:2014-08-10 01:47:49    阅读次数:337
后缀数组
什么是后缀数组后缀树(Suffix tree)是一种数据结构,能快速解决很多关于字符串的问题,缺点是算法复杂难懂且容易出错。而后缀数组、后缀自动机、后缀仙人掌都是后缀树的替代品。后缀数组 Suffix Array 是一个一维数组,它将字符串S的n个后缀从小到大排序后把排好序的后缀的开头位置顺次放入数...
分类:其他好文   时间:2014-08-08 18:00:46    阅读次数:447
hdu 4416 Good Article Good sentence (后缀数组)
题目大意: 给出一个A串和很多个B串,求出A中有多少个子串,是所有的B中没有出现的。 思路分析: 后缀数组的作用很容易的求出来整个串中不同的子串个数。 现在要求的是A中不同的,且在B中没有出现过的。 先把AB 串全部连接,跑一遍suffix array。然后求出有多少个不同的子串。 然后再单独用B 串跑 suffix array。再求出单独在B 中有多少个不同的 子串。...
分类:其他好文   时间:2014-08-07 23:16:25    阅读次数:257
ACdream 1104 瑶瑶想找回文串(SplayTree + Hash + 二分)
Problem Description刚学完后缀数组求回文串的瑶瑶(tsyao)想到了另一个问题:如果能够对字符串做一些修改,怎么在每次询问时知道以某个字符为中心的最长回文串长度呢?因为瑶瑶整天只知道LOL,当他知道自己省选成绩的时候就天天在LOL,导致现在的她实在是太弱了,根本解决不了这个问题,于...
分类:其他好文   时间:2014-08-07 12:33:50    阅读次数:315
关于O(n)算法
首先要明确一点,当数据规模达到百万时需用O(n)算法如何实现O(n)算法,其实是对原有算法的一种改进后者说是 原有算法+一点小性质=O(n)算法下面我将举几个例子来说明这一点:1.后缀数组中height数组的求法,暴力算法hash+二分 用上height[rank[i]]>=height[rank[...
分类:其他好文   时间:2014-08-06 22:08:02    阅读次数:186
hdu 4029 Distinct Sub-matrix (后缀数组)
题目大意: n*m的矩阵中,有多少个子矩阵不是同的。 思路分析: 假设这题题目只是一维的求一个串中有多少个子串是不同的。 那么也就是直接扫描height,然后减去前缀。 现在变成二维,如何降低维度。 知道hash 的作用就是将一个串映射到一个数字。 那我们就将这个矩阵hash,考虑到不同的长度和宽度都会导致不同, 所以就要枚举子矩阵的宽度。 hash [i][j]...
分类:其他好文   时间:2014-08-04 17:40:37    阅读次数:260
hdu 4898 LCP+贪心思维
题意:将一个字符串切成k块,使得字典序最大的那块最小。 ORZ  WJMZBMR,几行题解读了一天才懂。 快速比较两个子串的大小可以利用LCP(最长公共前缀),比较公共前缀的下一个字符的大小就够了。 利用这种思想,首先我们可以预处理所有子串的LCP(后缀数组+记录 O(2nlog(2n))+O(n*n),dp(O(4*n*n))) 然后将这些子串利用LCP按照字典序排序,开始二分答案。...
分类:其他好文   时间:2014-08-02 15:38:33    阅读次数:276
HDU 3068 最长回文 Manacher算法
Manacher算法是个解决Palindrome问题的O(n)算法,可以说是个超级算法了,秒杀其他一切Palindrome解决方案,包括复杂的后缀数组。 网上很多解释,这里总结一下思想重点: 1 原字符串的字符间插入新的字符, 如#,方便统一所有的字符中心,比如aa和aba的字符中心不一样的,aa的字符中心可以说是aa,而aba的中心则是b,而插入#之后,aa成#a#a#,其中...
分类:其他好文   时间:2014-07-31 03:04:15    阅读次数:224
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!