【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机
来源:互联网 发布:php get object vars 编辑:程序博客网 时间:2024/05/23 05:07
可以拿来练一下版
#include<cstdio>#include<cstring>#include<iostream>#include<map>#define maxn 250020*2#define LL long longusing namespace std;int n,fail[maxn],len[maxn],tot,last,rt;LL ans;map<int,int>son[maxn]; void insert(int x){ int p=last,np=++tot,q,nq; len[np]=len[p]+1; while(p&&!son[p][x]){ son[p][x]=np;p=fail[p]; } if(p==0)fail[np]=rt; else{ q=son[p][x]; if(len[q]==len[p]+1)fail[np]=q; else{ nq=++tot; len[nq]=len[p]+1; son[nq]=son[q]; fail[nq]=fail[q]; fail[q]=fail[np]=nq; while(p&&son[p][x]==q){ son[p][x]=nq;p=fail[p]; } } } last=np; ans+=(LL)len[np]-len[fail[np]];} int main(){ scanf("%d",&n); rt=last=tot=1; for(int x,i=1;i<=n;i++){ scanf("%d",&x); insert(x); printf("%lld\n",ans); } return 0;}
0 0
- bzoj 4516 [Sdoi2016]生成魔咒 后缀自动机
- bzoj 4516: [Sdoi2016]生成魔咒 (后缀自动机)
- 【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机
- 【bzoj4516】[Sdoi2016]生成魔咒 后缀自动机
- 后缀自动机 【Sdoi2016】生成魔咒 bzoj4516
- BZOJ4516 [Sdoi2016]生成魔咒 后缀自动机
- bzoj 4516: [Sdoi2016]生成魔咒 后缀数组
- [后缀数组 set] BZOJ 4516 [Sdoi2016]生成魔咒
- bzoj 4516: [Sdoi2016]生成魔咒 后缀数组
- [BZOJ4516] [SDOI2016] 生成魔咒 - 后缀数组/后缀自动机
- BZOJ4516 [Sdoi2016]生成魔咒 后缀自动机/后缀数组
- Bzoj4516:[Sdoi2016]生成魔咒:哈希表+后缀自动机
- BZOJ 4516: [Sdoi2016]生成魔咒
- BZOJ 4516: [Sdoi2016]生成魔咒
- BZOJ 4516 [Sdoi2016]生成魔咒
- bzoj 4516 [Sdoi2016]生成魔咒
- [BZOJ4516][Sdoi2016]生成魔咒(后缀数组+链表||后缀自动机)
- BZOJ 4516 后缀自动机
- 深入理解Java虚拟机:虚拟机是什么?
- 网易视频云:分布式转码服务高可用浅析
- 手势滑动日历
- android动态加载外部jar包,用eclipse将class转换成dex
- Dubbo2.8.4资源地址
- 【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机
- 删除一字符串的出现的字符子串
- 使用python登录新浪API,实现自动转发功能
- VC,VS,C++,OpenGL,OpenCV,VTK,Python常见的编译错误及解决方案
- Mac OS 安装 OpenCV (python3)
- 用JavaScript实现十大经典排序算法--选择排序
- asp.net core使用mysql.data和dapper操作mysql数据库
- v-if 和v-show
- Android文件存储总结