题目大意: 给你一个字符串s,求出不同长度出现次数最多的字串的最大出现次数。 思路: 先对s构造后缀自动机,然后把s放进去匹配,每一个经过的结点表示一种长度的子串,用一个cnt记录能以每个状态表示的子串数量,然后按拓扑序DP。 注意拓扑序并不等同于在SAM中插入的次序,因为用new_q替代q的操作会 ...
分类:
其他好文 时间:
2017-09-14 10:28:14
阅读次数:
147
题目链接:bzoj 3998: [TJOI2015]弦论 题意: 对于一个给定长度为N的字符串,求它的第K小子串是什么。 题解: 后缀自动机O(n)*26解决。 对于op=0,num[i]=1,对于op=1,num[i]=cnt[i]。 因为cnt[i](即right集)表示以i节点结尾的后缀出现的 ...
分类:
其他好文 时间:
2017-09-12 20:55:37
阅读次数:
136
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意: 先输入一个长度为 n 的字符串, 然后有 q 个形如 l, r 的询问, 对于每个询问输出区间 [l, r] 中有多少不同的子串 思路: 后缀自动机模板 代码: 1 // 后缀自动机要理 ...
分类:
其他好文 时间:
2017-09-11 22:40:25
阅读次数:
195
http://blog.csdn.net/gatevin/article/details/45875343 题目是求不重叠的不同子串个数 一般来说,endpos集合包含了子串结尾位置,每个状态都包含了若干子串。endpos集合的大小就是这些子串的出现次数 但是这样会重叠。那么可以求出endpos结合 ...
分类:
其他好文 时间:
2017-09-11 14:20:20
阅读次数:
217
题意:给你一个字符串和一个正整数K,让你输出恰好出现K次的子串的数量。 对后缀链接树进行dp预处理后,SAM每个点的endpos大小就是该点结尾的子串出现的次数,maxlen-minlen+1就是子串的数量,所以直接对endpos大小为K的点的(maxlen-minlen+1)求和即可。 ...
分类:
其他好文 时间:
2017-09-10 21:41:31
阅读次数:
166
原题意看的挺迷糊的,后来看了http://blog.csdn.net/YxuanwKeith/article/details/52351335大爷的题意感觉清楚的多…… 做法也非常显然了,用树剖维护后缀自动机的parent树。 修改操作看成对每一个状态的right集合全都访问次数+1 询问同理。 然 ...
分类:
其他好文 时间:
2017-09-10 12:34:35
阅读次数:
163
http://codeforces.com/problemset/problem/452/E 多个主串的模型。 建立一个广义后缀自动机,可以dp出每个状态的endpos集合大小。同时也维护一个R[]表示那个串出现过。 所以可以算出每个状态的dp[i][k]表示第k个串在第i个状态中出现的次数。 可以 ...
分类:
其他好文 时间:
2017-09-10 10:18:16
阅读次数:
208
emmmm暑假干了点什么呢? 7月在机房培训,听的基本是各种没有学过的东西。。。所以基本都是懂了个大概,没有具体的代码实现。。。23号之后休息,除了出去玩之外也没有干啥。。。 8月去雅礼集训。emmm讲的基本都是以前听过的东西和已经学过的东西。。。所以现在还是懂了个大概。。。至于收获嘛,就是有了十几 ...
分类:
其他好文 时间:
2017-09-01 23:08:49
阅读次数:
189
1 #include 2 #include 3 #include 4 using namespace std; 5 int sz=0,la,rt; 6 int ch[500010][26],l[500010],fa[500010]; 7 void Extend(int c){ 8 int end=+... ...
分类:
其他好文 时间:
2017-08-30 13:03:49
阅读次数:
168
看了几天居然连后缀自动机的构造原理和性质都没完全搞懂。。。更不用说应用了。 在这里膜一下先辈CLJ大神(的PPt),大神的世界就是不懂。另外还要膜一下国家集训队的几篇论文作者,表示还没看懂orz 先贴一个讲得通俗易懂的后缀自动机学习网站(蒟蒻的我居然仍然没看懂),讲得也够详细。学习网站 苦逼的我·一 ...
分类:
其他好文 时间:
2017-08-14 20:00:50
阅读次数:
140