标签:lag clu sub else others int call next enter
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3183 Accepted Submission(s): 1295
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <set> #include <vector> #include <queue> using namespace std; typedef long long ll; char a[1000010]; int p[1000010]; void getnext() { int i=0,j=-1; p[0]=-1; while(a[i]!=‘\0‘) { if(j==-1 || a[i]==a[j]) p[++i]=++j; else j=p[j]; } } int check(bool flag) { int i=0,j=1,k=0; while(i<strlen(a) && j<strlen(a) && k<strlen(a)) { int t=a[(j+k)%strlen(a)]-a[(i+k)%strlen(a)]; if(t==0) k++; else { if(flag) { if(t>0) j+=k+1; else i+=k+1; } else { if(t<0) j+=k+1; else i+=k+1; } if(i==j) j++; k=0; } } return min(i,j); } int main() { while(scanf("%s",a)!=EOF) { int minn=check(true); int maxn=check(false); getnext(); int ans=(strlen(a)%(strlen(a)-p[strlen(a)]))==0?strlen(a)/(strlen(a)-p[strlen(a)]):1; printf("%d %d %d %d\n",minn+1,ans,maxn+1,ans); } return 0; }
标签:lag clu sub else others int call next enter
原文地址:http://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7144971.html