BZOJ 2176 Strange string ——最小表示法
2017-03-01 22:37
337 查看
本来想用来练习后缀自动机的,但是100w有点虚(事实证明确实T掉了)。
只好上最小表示法。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k) for (int i=j;i>=k;--i) #define uch unsigned char uch s[10000005]; int l,pos; int main() { scanf("%d",&l); scanf("%s",s+1); int i,j,k; i=1;j=2;k=0; while (i<=l&&j<=l) { k=0; while (s[(i+k-1)%l+1]==s[(j+k-1)%l+1]&&k<=l) k++; if (k==l) return i; if (s[(i+k-1)%l+1]>s[(j+k-1)%l+1]) { if (i+k+1>j) i=i+k+1; else i=j+1; } else { if (j+k+1>i) j=j+k+1; else j=i+1; } pos=min(i,j); } F(i,1,l) printf("%c",s[(i+pos-1-1)%l+1]); }
相关文章推荐
- bzoj2176 Strange string 最小表示法
- BZOJ 2176: Strange string 最小表示法
- BZOJ 2176 Strange string 最小表示法
- BZOJ 2176 Strange String (最小表示法)
- BZOJ 2176 Strange string 最小表示法
- 【最小表示法】BZOJ2176-Strange string(unsigned char!!!)
- bzoj 2176: Strange string 字符串最小表示法
- BZOJ 2176: Strange string【字符串最小表示法
- Bzoj4484 [Jsoi2015]最小表示
- 【BZOJ 1398】 1398: Vijos1382寻找主人 Necklace (最小表示法)
- BZOJ 5130([Lydsy12月赛]字符串的周期-最小表示法+kmp)
- BZOJ 2882 工艺 ——后缀自动机 最小表示法
- 【JSOI2015】bzoj4484 最小表示
- bzoj 1398 &&bzoj 2882最小表示法
- 【BZOJ2882】工艺【最小表示法】
- bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
- BZOJ 2882: 工艺 最小表示法
- bzoj 4484 [Jsoi2015]最小表示
- [最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
- BZOJ 2882 浅谈最小表示法后缀数组求解+线性求解