----后缀数组
文章平均质量分 58
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj4614 字符串(待填)
(EMPTY)原创 2017-10-07 22:32:40 · 329 阅读 · 0 评论 -
后缀数组SA-IS模板
.SAIS真的好快啊,在UOJ能卡进第二页推荐几个讲的比较好的博客链接1链接2链接3和一篇讲了各种后缀数组算法的论文Code:#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include<stdio.h>#include<string.h>#include<algorithm>...原创 2018-11-14 10:43:44 · 1039 阅读 · 0 评论 -
后缀自动机转后缀树模板
终于找到教程了,现在来写一发题目:Jzoj4072(bzoj3998)弦论 第一问其实非常好写,连空间都不需要多开一倍,只需要sa数组rank数组和height数组就好了,dfs一次可以求出#include#include#include#include#define N 1000010using namespace std;char str[N]; long原创 2018-01-12 19:38:00 · 485 阅读 · 2 评论 -
Poj1743 Musical Theme
题目传送门题意:对一个序列的差分求出现至少两次且两次不相交的最长子串也是SA和SAM都可以做,SA稍微麻烦SA做法:二分+height分段rmqSAM做法(太神了):对于每个节点的right集合,求出其中的最大值和最小值那么合法的长度一定为min(mx[x],r[x]-l[x])(l和r分别是最大值和最小值)#pragma GCC opitmize("O3")#pra原创 2017-11-27 20:41:08 · 251 阅读 · 0 评论 -
Poj2774 Long Long Message
题目传送门题意:求两个字符串的LCS这个题是SA的经典题,也是SAM的经典题SA做法:连接两个字符串(中间加个#)让后求height,Answer=Max{height[i]}SAM做法:从开头匹配字符串,如果当前节点x能继续匹配就继续如果不能匹配,就令x=f[x]直到x为根或者可以继续匹配,这样显然是正确的,因为f[x]显然是x的后缀#include#includ原创 2017-11-27 20:06:56 · 328 阅读 · 0 评论 -
字符串专题讲解
最近教练叫我去讲字符串专题,于是来写一写这方面的内容主要就讲以下几个吧:1.Kmp 2.Extended Kmp3.Trie4.AC Automation5.String Hash6.Suffix Array7.Suffix Automation8.Suffix Tree9.manacher10.Palindrome Automation11.Suf原创 2017-11-26 16:03:44 · 992 阅读 · 10 评论 -
Bzoj3998 弦论
物理题目传送门求第k大的子串?SAM模板题啊CLJ的论文都讲了怎么做啊,把自动机看成一个后缀Trie求出size让后像多叉平衡树那样乱搞就好了~比前两个哈希的题好多了~ (顺便,hdu高亮好好看啊)#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N原创 2017-12-01 20:48:26 · 254 阅读 · 0 评论 -
Poj3294 Life Forms
题目传送门哈哈哈广义SAM真的好简(du)单(liu)啊到时候讲课可以拿来祸害众生,Yeah!好了开始讲题解,我们将所有字符串加入广义SAM里面对每一个节点维护一个bitset表示它在哪些主串中出现过,让后标记上传就用或运算就好了因为题目要求输出方案,加上一个dfs就可以了,复杂度O(L*n/64)(其实题目本质就是parent树上每个节点为一个集合,求一个子树的并的大小而原创 2017-11-30 17:34:32 · 416 阅读 · 0 评论 -
Poj3261 Milk Patterns
题目传送门题意:对一个字符串求一个最长的子串使得它至少出现k次额,因为这个题目呢,他的字符集非常大(100W)所以直接用SAM是不行了,我们考虑用离散化+SA,让后就可以分块rmq了当然这样很麻烦,我们还是用SAM,但是儿子集合用map来存,这样空间就是O(n)的,时间多了一个log#pragma GCC opitmize("O3")#pragma G++ opitmiz原创 2017-11-27 21:06:50 · 276 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3734 阅读 · 0 评论 -
字符串专题1
.都是些bzoj原题辣,这几天刚做的 Bzoj4032有趣的dp题,也要用到各种自动机注意到题目的两个关键词“子串”和“子序列”考虑对A和B串建立后缀自动机和序列自动机序列自动机:可以识别一个序列所有子序列的自动机 想必学过自动机的各位都知道这个玩意怎么建,这里不再阐述让后我们考虑这些询问询问1:直接用SAM做类似LCS的做法求出A每个前缀和B匹配的最长距离,取最小+1询问2:...原创 2018-11-19 22:06:20 · 259 阅读 · 0 评论