字符串处理
文章平均质量分 75
huyuncong
这个作者很懒,什么都没留下…
展开
-
kmp
为了学ac自动机,复习了一下kmp虽说是复习,但以前学的基本忘光了。。。推荐matrix67的博文http://www.matrix67.com/blog/archives/115/做了几道pojpoj 2752练习求p数组求串中前缀等于后缀的个数及位置原创 2011-08-23 16:28:11 · 485 阅读 · 0 评论 -
【除草】一些题目
hdu4304一段n*n的墙,用一个刷子来刷,要求刷子的第一根毛在第一个原创 2014-07-08 15:23:22 · 1291 阅读 · 0 评论 -
后缀数组第二弹
重复次数最多的连续重复子串(spoj687,pku3693)给定一个字符串,求重复次数最多的连续重复子串。#include #include #include #include const int oo=1073741819;int sa[105000],wv[105000],ws[105000],rk[105000],ht[105000],f[105000][18],y[1原创 2012-02-20 21:10:20 · 750 阅读 · 0 评论 -
【ctsc2012】solution
梭哈游戏题意:给定一系列比较规则,并给出A,B当前手牌,讨论牌抽完后,A能赢B的概率比较规则比较复杂,可以先判牌形,再将花色大小压成一个数,排序后我们就只要统计,在某副手牌之前的手牌中,有多少个与其无重复手牌,判重工作可以由容斥原理和hash表完成,对于每副手牌需要2^5判断复杂度为o(手牌数*2^5),手牌数最多只有c(51,5)5s时限还算充裕,对于hash,我们考虑用53进制压位,因原创 2012-05-19 16:57:28 · 2070 阅读 · 0 评论 -
【后缀自动机-后缀树上的维护】hdu4641
每次给字符串加一个字符,并询问当时出现至少k次的子串有多少貌似数据特别水,看网上题解都是暴力过的,所以自然要给出一个不会超时的算法当初考的时候,觉得很难维护,因为每次相当于在后缀树上拆一条边,并加点进去,并维护当根路径上的值,好像只能动态树之类的,即便离线,貌似也要用树链剖分,因此当时就没管了回过头来看,其实还是挺好维护的,甚至只要离线在dfs序上处理就可以了考虑先把后缀树建好,然原创 2013-11-09 15:29:57 · 1492 阅读 · 0 评论 -
【字符串新武器】后缀自动机
发链:http://neroysq.blogcn.com/articles/%E5%90%8E%E7%BC%80%E8%87%AA%E5%8A%A8%E6%9C%BA%E5%88%9D%E6%8E%A2.htmlhttp://blog.sina.com.cn/s/blog_7812e98601012cim.html详细构造见上述链接,此处介绍性质与理解后缀自动机具有两大性质,考虑转原创 2012-05-19 19:33:44 · 10824 阅读 · 13 评论 -
【拓展kmp】
太久不写,考场上都不敢直接敲了...Kuala2011 G#include #include #include #include #include using namespace std;char a[200000],b[200000],ch[200000];int n,m,len,f[200000],t;int main(){ freopen("input.txt原创 2013-11-17 13:47:34 · 920 阅读 · 0 评论 -
【dp】Grouping by Prefixes
给出一个大小为n的字符串集合A,需要确定一个大小为m的字符串集合B,要保证能把A集合分成恰好m份非空集合,要求前缀为bi的字符串都被分在第i个集合,同时一个字符串不能分在多个集合。求有多少符合要求的B,同时给出一种方案.第一种思路是建出字母树,那么问题转化为在树上选m个独立的子树覆盖所有的叶子,这个直接做是o(n*m*m)的,所以可以转到dfs序上,压缩字母树的边后dp就可以了,这是一队的算法原创 2013-07-31 20:36:36 · 730 阅读 · 0 评论 -
【后缀自动机】自动机<->后缀树<->后缀数组
一直都说自动机建后缀树,一直没真正构出后缀树过...其实建后缀树很简单,父亲边已经有了,关键是边代表的子串怎么求。从叶子一层一层向上,对于节点i,我们已经知道了它在原串的位置和逆序后缀长度,他的父亲的逆序后缀长度也知道,父亲又是i的逆序后缀的前缀,这就可以直接在原串定位了。另外,通过父亲边还可以求出节点i可接受的最短子串,设i的最长子串长度为maxlen[i],最短子串长度为minlen[原创 2013-03-27 09:36:03 · 2212 阅读 · 0 评论 -
【构造】后缀数组求逆
根据sa[]数组反求原数组,只能26小写字母。有了sa[],自然有了rank[],从原数组最后的往前考虑,我们尽量要将原数组用小的字符集表示,因为只有26个字母可以表示,那么排名比当前枚举的小一位的的字符串,如果第二位比其小的话,那么排名比当前枚举的小一位的的字符串的首位可与其首位相同,同样的向比它大的考虑一遍则可使字符集尽量小。#include #include #include原创 2012-03-10 15:05:08 · 694 阅读 · 0 评论 -
后缀数组(倍增)
后缀数组的原理大致了解,至于那精简的代码却只能说知道每一步在做什么>_(ps:目前已知的文艺程序的代表作)运用倍增的思想,每个点向后延伸2^i的排名可由2^(i-1)推出,因此用基排每次可在o(n)时间摆平,但是要扩展(logn)次,所以是o(nlogn)的而height表示相邻两后缀的最长公共前缀,根据定理height[rank[i]]>=height[rank[i-1]]-1求原创 2012-02-20 20:19:48 · 840 阅读 · 0 评论 -
ac自动机+矩阵 poj 2778
ac自动机,令人神往的名字。。。ac自动机:http://www.cppblog.com/mythit/archive/2009/04/21/80633.htmlpoj2778:http://hi.baidu.com/%D2%D5%C1%D6010/blog/item/6原创 2011-08-29 21:52:58 · 996 阅读 · 0 评论 -
【回文自动机】ural2040
题意:依次添加字符询问增加的原创 2014-11-16 23:17:26 · 2726 阅读 · 4 评论