[最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
来源:互联网 发布:进程调度算法代码 编辑:程序博客网 时间:2024/05/26 09:53
题目大意:最小循环表示
有
但是为了练习后缀自动机
把串复制一遍,构建后缀自动机,每次选择最小的边转移即可
因为字符集很大,所以转移边用map来存即可
#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; } return *p1++;}inline void read(int &x){ char c=nc(),b=1; for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1; for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}const int N=600000+5;struct state{ int link,len; map<int,int> next;}st[N<<1];int ncnt,last;inline void Extend(int c){ int cur=++ncnt,p; st[cur].len=st[last].len+1; for (p=last;p!=-1 && !st[p].next.count(c);p=st[p].link) st[p].next[c]=cur; if (p==-1) st[cur].link=0; else{ int q=st[p].next[c]; if (st[q].len==st[p].len+1) st[cur].link=q; else{ int nq=++ncnt; st[nq].len=st[p].len+1; st[nq].next=st[q].next; st[nq].link=st[q].link; for (;p!=-1 && st[p].next[c]==q;p=st[p].link) st[p].next[c]=nq; st[cur].link=st[q].link=nq; } } last=cur;}int n,a[N];int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(n); for (int i=1;i<=n;i++) read(a[i]); st[0].link=-1; for (int i=1;i<=n;i++) Extend(a[i]); for (int i=1;i<=n;i++) Extend(a[i]); int p=0; for (int i=1;i<=n;i++){ printf("%d%c",st[p].next.begin()->first,i==n?'\n':' '); p=st[p].next.begin()->second; } return 0;}
0 0
- [最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
- BZOJ 2882 工艺 后缀自动机
- bzoj 2882: 工艺 (后缀自动机+map)
- [BZOJ2882]工艺(后缀自动机+stl||最小表示法)
- bzoj2882 工艺(后缀自动机(最小表示法))
- 【BZOJ 2882】工艺 最小表示法
- BZOJ 2882: 工艺 最小表示法
- [BZOJ]2882 工艺 最小表示法
- BZOJ 2882 工艺 字典序最小的循环同构串(最小表示法 详解)
- [BZOJ2882][后缀自动机]工艺
- [BZOJ2882]工艺 后缀自动机
- UVA 719(后缀自动机/最小表示法)
- BZOJ 2882 后缀数组/最小表示法 解题报告
- HDU5558后缀自动机模板题
- poj1509 后缀自动机模板题
- POJ 1509 Glass Beads【后缀自动机、最小表示法】
- uva 719 - Glass Beads(最小表示法 | 后缀自动机)
- POJ-1509 Glass Beads (字符串最小表示法&后缀自动机)
- 解决df -h 发现/目录100%的问题
- Openjudge NOI题库1.7编程基础之字符串 34:回文子串
- Shiro Quickstart
- 创建对象之原型模式
- 二叉树的镜像(二叉树的对称性)
- [最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
- 《ES6 标准入门》读书笔记
- 欢迎使用CSDN-markdown编辑器
- C3P0,Dbutils4mysql分页
- J.U.C--locks--ReentrantLock
- 直线的旋转与相交,计算几何(Morley定理,uva 11178)
- Ubuntu下的截图工具
- View相关知识点
- 1032. Sharing (25)