字符串算法
czysjr
lalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala
展开
-
manacher 算法
今天有一题要O(n)求回文串然后再匹配一下, 所以就学了一下这个manacher 算法, 以前好像也听过的, Apio有题好像也要用这个manacher算法:定义数组p[i]表示以i为中心的(包含i这个字符)回文串半径长将字符串s从前扫到后for(int i=0;i由于s是从前扫到后的,所以需要计算p[i]时一定已经计算好了p[1]....p[i-1]假设现在扫描到了i+k转载 2014-11-03 21:10:17 · 339 阅读 · 0 评论 -
kmp总结
因为kmp学的时间有点早, 所以这也是我一直有些含糊的算法之一原创 2014-10-27 17:22:03 · 478 阅读 · 0 评论 -
后缀自动机
后缀自动机我已经给zxa和hzt都讲了一遍了, 就不在这里再重复了。后缀自动机做的事情就是用 O(n) 的时间建出来一棵后缀树, 然后就可以用后缀树做很多可爱的事情啦 ~\(≧▽≦)/~后缀自动机的空间占用是 lenth * 2 * (字符种类), 相比于 ac自动机的 lenth(子串) * (字符种类)* (字符种类)也不算差, 但是它的功能要强大得多。后缀自动机的一个特点就是,原创 2014-12-11 14:23:57 · 398 阅读 · 0 评论 -
AC 自动机
ac自动机 也不知道 学过多少遍了。它具体干的事情就是在一棵trie树上跑kmp。我们先来想一想普通的kmp在做些什么:fail数组建立时:维护一个j值, 表示当前点的上一个节点最多可以匹配到匹配串的哪里, 然后一直往前推j (令j = next[j]) , 直到j + 1 == 当前点。匹配时也差不多。在trie树上fail指针想要实现的内容是和kmp一样的, 但是考原创 2014-11-25 19:38:42 · 308 阅读 · 0 评论