【BZOJ 2882】工艺 最小表示法
2017-03-20 20:12
253 查看
YY了一个后缀数组的写法,肯定可以做,但是最小表示法方便多了,而且复杂度还是O(n)的。而且正确性很显然
#include<cstdio> #include<cstring> #include<iostream> #define maxn 300021 using namespace std; int n,s[maxn]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",s+i); int a=1,b=2,i; s[n+1]='z'+12; while(a<=n&&b<=n){ for(i=0;s[a+i]==s[b+i]&&max(a,b)+i<=n;i++); if(s[a+i]>s[b+i])a=a+i+1; else b=b+i+1; if(a==b)b++; } int bg=min(a,b); if(bg==1){ for(int i=bg;i<=n;i++){ printf("%d",s[i]); if(i!=n)printf(" "); } }else{ for(int i=bg;i<=n;i++)printf("%d ",s[i]); for(int i=1;i<bg;i++){ printf("%d",s[i]); if(i!=bg-1)printf(" "); } } return 0; }
相关文章推荐
- [BZOJ2882]工艺(后缀自动机+stl||最小表示法)
- bzoj2882 工艺(后缀自动机(最小表示法))
- 【最小表示法】BZOJ2882-工艺
- [最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
- 【BZOJ2882】工艺【最小表示法】
- [BZOJ]2882 工艺 最小表示法
- 【BZOJ2882】【字符串的最小表示】工艺
- 【bzoj2882】【工艺】【最小表示法】
- BZOJ.2882.工艺(后缀自动机 最小表示 map)
- bzoj2882 工艺【最小表示法】
- BZOJ 2882 工艺 ——后缀自动机 最小表示法
- BZOJ 2882 工艺 字典序最小的循环同构串(最小表示法 详解)
- BZOJ 2882: 工艺 最小表示法
- BZOJ 2882 工艺 (字符串最小循环同构)
- bzoj 1398 &&bzoj 2882最小表示法
- BZOJ 2882 浅谈最小表示法后缀数组求解+线性求解
- BZOJ 2882 后缀数组/最小表示法 解题报告
- bzoj 2882(最小表示法)
- BZOJ 2176 Strange string ——最小表示法
- bzoj 1398: 寻找主人 AC自动机+最小表示法