后缀自动机 重复旋律 5(求所有本质不同的子串)
来源:互联网 发布:spring mvc传对象数组 编辑:程序博客网 时间:2024/05/22 03:21
后缀自动机二 重复旋律五
本题要求我们求出一个字符串S中本质不同的子串个数。
显然,答案就是所有状态上的子串个数之和,这里说的一个状态上的子串个数,是longest-shortest+1。主要需要学习的是,后缀自动机的O(N)构建方法。需要了解的是,一个状态u的shortest=fail.longest+1。
#include <bits/stdc++.h>using namespace std;const int mxn = 2000100;namespace suffixAuttomaton{ int tail=2; int fail[mxn]; int maxi[mxn]; int mini[mxn]; int next[mxn][26]; inline int extend(int p,int c) { int t=tail++; maxi[t]=maxi[p]+1; while(p&&!next[p][c]) next[p][c]=t,p=fail[p]; if(p) { int q=next[p][c]; if(maxi[q]==maxi[p]+1) fail[t]=q,mini[t]=maxi[q]+1; else { int k=tail++; fail[k]=fail[q]; fail[q]=fail[t]=k; maxi[k]=maxi[p]+1; mini[q]=maxi[k]+1; mini[t]=maxi[k]+1; for(int i=0;i<26;i++) next[k][i]=next[q][i]; while(p&&next[p][c]==q) next[p][c]=k,p=fail[p]; mini[k]=maxi[fail[k]]+1; } } else fail[t]=1,mini[t]=1; return t; }}using namespace suffixAuttomaton;int n;char s[mxn];int main(){ scanf("%s",s); n=strlen(s); int last=1; for(int i=0;i<n;i++) last=extend(last,s[i]-'a'); long long ans=0; for(int i=2;i<tail;i++) ans+=maxi[i]-mini[i]+1; printf("%lld\n",ans );}
阅读全文
0 0
- 后缀自动机 重复旋律 5(求所有本质不同的子串)
- 后缀自动机 重复旋律 7 求所有不同的子串的值的总和
- HDU 4622 本质不同的子串个数:后缀自动机
- 后缀自动机 重复旋律 6(长度为K的旋律中出现次数最多的旋律的出现次数)
- hihocoder 1445 : 后缀自动机二·重复旋律5(后缀自动机)
- 后缀自动机 求不同的子串数目
- [SAM] hihoCoder1445 后缀自动机二·重复旋律5
- hihocoder #1445 : 后缀自动机二·重复旋律5
- 后缀自动机(不同子串的个数)hdu4416
- Hiho 122 后缀数组三·重复旋律3(多个串的最长公共重复子串)
- hihoCoder 1419 后缀数组四·重复旋律4(重复次数最多的连续子串)
- 若干的数字串所有不同子串的和 后缀自动机
- BZOJ 题目3998: [TJOI2015]弦论(后缀自动机求排名第k的子串,可重复)
- hdu 4416 后缀自动机 求一个字符串中出现的不同子串的个数(去除一些其他字符串的子串)
- Hiho 121 后缀数组二·重复旋律2(最长不可重叠重复子串问题)
- 重复旋律 后缀数组 板子 最长可重叠重复子串问题
- hihoCoder 1403后缀数组一·重复旋律(最长可重叠重复子串问题)
- HDU 4622 Reincarnation (查询一段字符串的不同子串个数,后缀自动机)
- CentOS-5.11 更换默认软件源的方法
- HTML的基础知识
- [平面图欧拉定理]ONTAK2015. Ogród zoologiczny
- virtualbox虚拟机上安装centOS的网络配置
- 一次频繁Full GC的排查过程
- 后缀自动机 重复旋律 5(求所有本质不同的子串)
- Mysql中那些锁机制之InnoDB
- Elasticsearch5.6搭建及拼音中文混合搜索实现
- [spark] RDD解析
- SSM实战项目——Java高并发秒杀API
- python实现对其它主机的操作
- Spring Boot + Spring Data + Elasticsearch example
- Eclipse Java注释模板设置详解
- MVVM模式