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