
字符串
Moon1125666900
这个作者很懒,什么都没留下…
展开
-
后缀数组
后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。(以上内容摘自度娘~~~) 不久前写过后缀数组,今天来复习一下……#include <cstdio>#include <algorithm>#include <io原创 2017-02-01 18:20:39 · 381 阅读 · 0 评论 -
AC自动机
简单来说就是Trie+KMP,用了一天时间学并码了出来…… #include <cstdio>#include <cstring>#define maxn 1000000+5int T,n,val[maxn],ch[maxn][26],sz,fail[maxn],h,t,q[maxn];char s[55],st[maxn];void insert(char *s)//相当于Trie {原创 2017-02-01 10:24:25 · 337 阅读 · 0 评论 -
KMP水题
POJ2185,题意大概是找出最小矩阵可以通过复制覆盖原矩阵。 先用KMP算出每行可行重复长度,找出所有行都可行的最小长度k, 在把每行字符串的开头k个字符当做一个字符跑一边KMP,r-next[r]即最小宽。长乘宽即为所求~~~#include <cstdio>#include <algorithm>#include <cstring>#define INF 233333333333u原创 2017-02-10 17:08:05 · 452 阅读 · 0 评论 -
后缀数组(修订版)
今天在码一道后缀数组+二分答案时,调了一个上午,发现后缀数组出了问题,这就像最信任的人给了泥最致命的一刀QAQ~~~原来蓝书上的板子是有问题的,因为若以0为下标,由于初始值是0,在重新计算x数组时,会造成越界,原本越界的字符串(空字符串)应该当做最小的(-1???)来比较,而这样会造成错误。hack数据: cbcbc 若用蓝书上的板子,sa数组为 实际上应该为 要完善程序,只需加上一原创 2017-03-04 12:59:18 · 398 阅读 · 0 评论 -
Manacher 最长回文子串
如题,对于一个字符串求其最长回文子串。 直接暴力O(N2N^2) 用哈希可以优化至O(NlogNNlogN) Manacher算法可以达到O(N) 原理如下: f【i】表示以i为中心延伸的最大长度(包括i)。 mx表示当前回文子串最右延伸到的地方 mid表示中点 如果是第i的点是红色的情况,则只要按下式即可求出f【i】 如果是蓝色的情况,还要暴力匹配: 然后更新一下mx即原创 2017-09-27 17:35:26 · 284 阅读 · 0 评论 -
最小表示法
对于一个字符串的循环同构,求最小字典序。 主要思想是贪心,用两个指针扫描,每次都把能跳的都跳掉。 参考: https://wenku.baidu.com/view/0e1a6013a216147917112820.html http://blog.youkuaiyun.com/zy691357966/article/details/39854359 代码原创 2017-09-28 07:13:06 · 368 阅读 · 0 评论