60分 四个点TLE~~求助~~

P3538 [POI2012] OKR-A Horrible Poem

~~我也回一个40分的代码~~ ``` #include<bits/stdc++.h> using namespace std; int vv[100000],cnt; bool b[500050]; int n,l,r,m; string s,a,qwq; inline bool check(char a) { for(register int i=l+1; i<=r; i++) { if(a!=s[i])return false; } return true; } inline bool chenzhe(int i) { for(register int j=l+i; j+i-1<=r; j+=i) { qwq=s.substr(j,i); if(qwq!=a)return false; } return true; } inline bool kkk(int u) { for(register int i=2; i<=(u>>1); i++) { if(!(u%i)) { a=s.substr(l,i); if(chenzhe(i)){ printf("%d\n",i); return true; } } } return false; } int main() { scanf("%d",&n); for(register int i=2; i<=n; i++) { if(!b[i]) { vv[cnt++]=i; } for(register int j=0; j<cnt&&i*vv[j]<=n; j++) { b[i*vv[j]]=1; if(i%vv[j]==0)break; } } cin>>s; s='0'+s; scanf("%d",&m); while(m--) { scanf("%d%d",&l,&r); register int u=r-l+1; if(u==1) { printf("1\n"); continue; } if(!b[u]) { a=s[l]; if(check(a[0]))printf("1\n"); else printf("%d\n",u); } else { if(!kkk(u))printf("%d\n",u); } } return 0; } /* 15 acbacbbbcdbbcde 1 7 14 acb acb bbcd bbcd e */ ```
by 风华正茂 @ 2018-10-09 18:22:55


@[风华正茂](/space/show?uid=113510) ~
by PPXppx @ 2018-10-09 18:53:23


@[Ym2011](/space/show?uid=112164) 咋了呀
by 风华正茂 @ 2018-10-09 19:04:42


60分代码+1 ```cpp #include<bits/stdc++.h> using namespace std; typedef unsigned long long ULL; const int B=1000000007; char s[500005];int l,a,b,ans[2000002];ULL p[500005],h[500005]; void getp() { p[0]=1; for(int i=1;i<=500001;i++)p[i]=p[i-1]*B; } void hash1() { h[0]=0; for(int i=1;i<=l;i++)h[i]=h[i-1]*B+s[i]-'a'+1; } int judge(int L) { ULL h1=h[L+a-1]-h[a-1]*p[L]; for(int i=2;i<=l/L;i++) { if(h1!=h[i*L+a-1]-h[i*L-L+a-1]*p[L])return 0; } return 1; } int main() { getp(); cin>>l; scanf("%s",s+1); hash1(); int T;cin>>T; for(int Ti=1;Ti<=T;Ti++) { cin>>a>>b;l=b-a+1; int f=1; for(int i=1;i<=l/2;i++) { if(l%i==0) { if(judge(i)) { f=0; cout<<i<<endl;; break; } } } if(f)cout<<l<<endl; } return 0; } ```
by かみじょ @ 2018-12-11 11:38:46


### 60分代码+1 ```c #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") #pragma GCC optimize("-fipa-sra") #pragma GCC optimize("-ftree-pre") #pragma GCC optimize("-ftree-vrp") #pragma GCC optimize("-fpeephole2") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-fsched-spec") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-falign-jumps") #pragma GCC optimize("-falign-loops") #pragma GCC optimize("-falign-labels") #pragma GCC optimize("-fdevirtualize") #pragma GCC optimize("-fcaller-saves") #pragma GCC optimize("-fcrossjumping") #pragma GCC optimize("-fthread-jumps") #pragma GCC optimize("-funroll-loops") #pragma GCC optimize("-fwhole-program") #pragma GCC optimize("-freorder-blocks") #pragma GCC optimize("-fschedule-insns") #pragma GCC optimize("inline-functions") #pragma GCC optimize("-ftree-tail-merge") #pragma GCC optimize("-fschedule-insns2") #pragma GCC optimize("-fstrict-aliasing") #pragma GCC optimize("-fstrict-overflow") #pragma GCC optimize("-falign-functions") #pragma GCC optimize("-fcse-skip-blocks") #pragma GCC optimize("-fcse-follow-jumps") #pragma GCC optimize("-fsched-interblock") #pragma GCC optimize("-fpartial-inlining") #pragma GCC optimize("no-stack-protector") #pragma GCC optimize("-freorder-functions") #pragma GCC optimize("-findirect-inlining") #pragma GCC optimize("-fhoist-adjacent-loads") #pragma GCC optimize("-frerun-cse-after-loop") #pragma GCC optimize("inline-small-functions") #pragma GCC optimize("-finline-small-functions") #pragma GCC optimize("-ftree-switch-conversion") #pragma GCC optimize("-foptimize-sibling-calls") #pragma GCC optimize("-fexpensive-optimizations") #pragma GCC optimize("-funsafe-loop-optimizations") #pragma GCC optimize("inline-functions-called-once") #pragma GCC optimize("-fdelete-null-pointer-checks") ```
by 龙翔凤翥 @ 2019-01-27 18:03:20


### 60分代码+1 ```cpp #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define RN register int int n,ans,flag,t=131; unsigned int pow[1000101],has[1000101]; char str[1000101]; inline int read() { int k=1;int x=0; char c=getchar(); while ((c<'0'||c>'9')&&c!='-')c=getchar(); if(c=='-') k=-1,c=getchar(); while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); return k*x; } int main() { pow[0]=1; for(RN i=1;i<=1000001;i++) pow[i]=(pow[i-1]*t); int xxx; xxx=read(); scanf("%s",str+1); int w=read(); for(RN i=1;i<=xxx;i++) { has[i]=(has[i-1]*t+(str[i]-'a'+1)); //cout<<has[i]<<" "; } //cout<<has[4]-has[2]*pow[2]; for(RN k=1;k<=w;k++) { flag=ans=1; int x,y; x=read(),y=read(); for(RN len=x;len<=y;len++) if(!((y-x+1)%(len-x+1))) { flag=1; unsigned int h=has[len]-has[x-1]*pow[len-x+1]; //cout<<"h= "<<h; for(RN i=len;i<=y;i+=(len-x+1)) if(h!=has[i]-(has[i-len+x-1]*pow[len-x+1])) { flag=0; break; } if(flag) {ans=len-x+1;break;} } printf("%d\n",ans); } return 0; } ```
by 龙翔凤翥 @ 2019-01-27 18:04:16


线性筛那里要开的大一点,我也不造为啥。。亲测能过。。
by kevin006 @ 2019-08-05 15:47:24


|