ZOJ 1729 & ZOJ 2006(最小表示法模板題)
阿新 • • 發佈:2018-11-07
輸出每個字串的最小字典序字串的下標!
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 200017; char str[maxn], tmp[maxn]; //最小表示法 int len; int get_minstring(char *s) { int len = strlen(s); int i = 0, j = 1, k = 0; while(i<len && j<len && k<len) { int t=s[(i+k)%len]-s[(j+k)%len]; if(t==0) k++; else { if(t > 0) i+=k+1; else j+=k+1; if(i==j) j++; k=0; } } return min(i,j); } int main() { int t; int len; scanf("%d",&t); while(t--) { scanf("%d",&len); scanf("%s",str); int ans = get_minstring(str); printf("%d\n",ans+1); } return 0; }