随笔分类 -  字符串 后缀自动机

摘要:水题 建两个自动机跑转移就行了 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push_back #define 阅读全文
posted @ 2020-09-11 11:42 摸鱼选手LLF 阅读(153) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push_back #define fi first #defin 阅读全文
posted @ 2020-09-11 11:28 摸鱼选手LLF 阅读(118) 评论(0) 推荐(0)
摘要:如题 N<=250000 倍增后缀数组和DC3都过不了 ,据说有的人DC3能过 后缀自动机 首先对A串建立后缀自动机 然后让B在A上匹配 考虑B的逐位匹配,维护一个cur节点,一开始这个节点是空节点,也就是1 然后如果cur的转移里面有B[i] ,那么ans++, cur转移到下个节点 如果匹配不到 阅读全文
posted @ 2020-09-10 16:20 摸鱼选手LLF 阅读(122) 评论(0) 推荐(0)
摘要:链接: https://www.luogu.com.cn/problem/P3975 题意如题 题解:先DFS累加后面的串出现的次数, 然后跑trans找就可以了 当不同位置看作同一个字串时,显然这时候每个状态只出现一次,出现次数siz就是1;(同时注意设置clone节点的siz,因为建立时clon 阅读全文
posted @ 2020-09-10 11:12 摸鱼选手LLF 阅读(160) 评论(0) 推荐(0)
摘要:统计本质不同的字串板子题 把每个状态里的串统计一下就行了 链接 :https://hihocoder.com/problemset/problem/1445 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #defin 阅读全文
posted @ 2020-08-13 15:17 摸鱼选手LLF 阅读(139) 评论(0) 推荐(0)
摘要:空字符节点为状态1,而且这个空状态也是放在基数排序里面排序过的 还有关于clone的节点啊,要注意 他的siz一开始是设成0的 我们注意到clone节点 ++size时,没有把这个状态的siz设成1,而是0,因为这个状态是拆开的,所以后面DFS累加的时候累加上来就是原值,防止重复计算。感性理解一下把 阅读全文
posted @ 2020-08-13 15:15 摸鱼选手LLF 阅读(181) 评论(0) 推荐(0)