字符串处理
Hillan_
An OIer From ZJ
展开
-
后缀数组
当我们事先知道一个很大的文本串,要在这个文本串里面找若干个字符串,此时用kmp或者ac自动机都会导致时间复杂度过高,所以我们需要预先处理文本串。这时候,我们可以用后缀树。我们这里介绍后缀数组的组建。 直接上代码,如果不知道什么是后缀数组,请问度娘。void doit() { int i,j,k,l; n=strlen(s); for(i=1;i t[s[i-1]]原创 2015-11-13 18:15:41 · 457 阅读 · 0 评论 -
回文自动机 PAM
http://blog.csdn.net/lwfcgz/article/details/48739051这篇文章翻译地很详细了 感觉现在概念差不多了 晚上开始打代码PAM和SAM感觉差不多? 0.0然后貌似有很神奇的用处?(虽然我现在SAM学的都不怎么扎实。。。原创 2015-12-24 14:17:37 · 754 阅读 · 0 评论 -
PAM模板
对着别人程序打的。。。好歹打出来了是吧#include#include#includeusing namespace std;struct Node{ int len; Node *ch[31]; Node *last; int num; Node(){for(len=0;len<=30;len++)ch[len]=NULL;last=NULL;len=num原创 2015-12-24 17:00:34 · 499 阅读 · 0 评论 -
BZOJ2806: [Ctsc2012]Cheat
23333调了好久发现是后缀边搞错了。。。DP我是直接Copy别人的。。。反正就是SAM+DP嘛。。。#include#include#include#includeusing namespace std; struct Node{ Node *last; Node *ch[3]; int len; Node(){len=0;last=原创 2016-02-09 09:19:06 · 533 阅读 · 0 评论 -
BZOJ3350: 相似回文串
我只想到了转化成图求染色方案 然后后来ydc大爷说这个是论文题。。 原来是弦图啊!!#include<cstdio>#include<iostream>#include<set>#include<cstring> #include<set>#include<map>using namespace std;constint mod=1000000007;char S[500000原创 2016-02-04 14:18:31 · 628 阅读 · 0 评论 -
BZOJ3670: [Noi2014]动物园
KMP 一开始的想法是二分next然后nlogn 妥妥的T了 后来看大神题解发现时可以O(n)建造二倍的next的 自己居然想不到这么做。。。 马上要省选了感觉自己智商不够啊#include<cstdio>#include<iostream>#include<cstring>using namespace std;int next[1000004];int next2[100000原创 2016-02-27 10:16:36 · 414 阅读 · 0 评论 -
BZOJ3926: [Zjoi20150]诸神眷顾的幻想乡
这一题有点坑。。注意longlongSAM裸题。。。#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;struct Node{ int len; Node *f,*last,*ch[10]; Node(原创 2016-02-27 19:00:32 · 561 阅读 · 0 评论