BZOJ1031 [JSOI2007]字符加密Cipher 后缀数组
来源:互联网 发布:磁力链接转种子软件 编辑:程序博客网 时间:2024/06/07 00:06
题目大意:输入一个字符环,从每个位置开始沿正方向读字符个数个,得到的串排序,输出排序后每个串末尾字符构成的串。长度<=100000
后缀数组裸题。注意基排时不要把q[i]打成i,重标号时要考虑边界。
自己的代码(好像和常见写法没什么区别。。。)
#include<cstdio>#include<cstring>#define gm 200001char s[gm];int sa[gm];void sort(const char* s,int *sa){ static int v[gm<<1],c[gm],q[gm]; int len=strlen(s),lim=128; memset(v+len,-1,len<<2); memset(c,0,lim+1<<2); for(int i=0;i<len;++i) ++c[v[i]=s[i]]; for(int i=2;i<=lim;++i) c[i]+=c[i-1]; for(int i=len-1;~i;--i) sa[--c[v[i]]]=i; for(int h=1;;h<<=1) { int r=0; memset(c,0,lim+1<<2); for(int i=len-h;i<len;++i) q[r++]=i; for(int i=0;i<len;++i) if(sa[i]>=h) q[r++]=sa[i]-h; for(int i=0;i<len;++i) ++c[v[q[i]]]; for(int i=2;i<=lim;++i) c[i]+=c[i-1]; for(int i=len-1;~i;--i) sa[--c[v[q[i]]]]=q[i]; lim=0; for(int i=0;i<len;++i) { if(!i||v[sa[i]]!=v[sa[i-1]]||v[sa[i]+h]!=v[sa[i-1]+h]) ++lim; q[sa[i]]=lim; } memcpy(v,q,len<<2); if(lim==len) break; }}int main(){ scanf("%s",s); int len=strlen(s); for(int i=0;i<len-1;++i) s[i+len]=s[i]; sort(s,sa); for(int i=0;i<(len<<1)-1;++i) if(sa[i]<len) putchar(s[sa[i]+len-1]); putchar('\n'); return 0;}
0 0
- [BZOJ1031][JSOI2007]字符加密Cipher && 后缀数组
- [JSOI2007] [BZOJ1031] 字符加密Cipher - 后缀数组
- BZOJ1031 [JSOI2007]字符加密Cipher 后缀数组
- [BZOJ1031][[JSOI2007]字符加密Cipher] 后缀数组
- BZOJ1031[JSOI2007]字符加密Cipher 后缀数组
- [bzoj1031][JSOI2007]字符加密Cipher 后缀数组
- [BZOJ1031][JSOI2007]字符加密Cipher(后缀数组)
- 【bzoj1031】【JSOI2007】【字符加密】【Cipher】【字符串】【后缀数组】
- 后缀数组 模板【JSOI2007】 bzoj1031 字符加密Cipher
- 【后缀数组】BZOJ1031(JSOI2007)[字符加密Cipher]题解
- 后缀数组——BZOJ1031 [JSOI2007]字符加密Cipher
- bzoj1031: [JSOI2007]字符加密Cipher(后缀数组)
- BZOJ1031: [JSOI2007]字符加密Cipher
- [Bzoj1031][JSOI2007]字符加密Cipher
- [bzoj1031][JSOI2007]字符加密Cipher
- [BZOJ1031][JSOI2007]字符加密Cipher
- bzoj1031: [JSOI2007]字符加密Cipher
- 【JSOI2007】【BZOJ1031】字符加密Cipher
- fatal error LNK1104: 无法打开文件*.exe
- 前端轻松破解支付宝AR抢红包
- 详解D3D/OpenGL光栅化(1)
- Leetcode oj java Delete Node in a Linked List
- Ajax请求中的async:false和async:true的差异
- BZOJ1031 [JSOI2007]字符加密Cipher 后缀数组
- 我怎么学习spring-bean的作用域
- 数据库的常规命令
- 欢迎使用CSDN-markdown编辑器
- 简述前缀运算符与后缀运算符
- 机器学习笔记
- 利用RecyclerView实现的一个动画给变item的位置和左右滑动删除该RcyclervView的Item条目
- Power OJ 2543 赛场布置(网络流最小割)
- Notice: Undefined index: act