我神奇的代码在神奇的OJ上神奇地TLE了,求帮助

P3952 [NOIP2017 提高组] 时间复杂度

您的格式挂了
by iodwad @ 2018-02-06 18:34:07


数据可能不一样
by Salamander @ 2018-02-06 18:53:24


``` #include<bits/stdc++.h> using namespace std; int num(char s) { int ret=0; bool fl=false; for(int i=0;i<strlen(s);i++) { if(s[i]=='n') { fl=true; } if(fl && s[i]>='0' &&s[i]<='9') { ret=ret10+s[i]-48; } } if(!fl) return 0; else return ret; } char getch() { char p=getchar(); while(!((p>='0'&&p<='9')||(p>='a'&&p<='z')||(p>='A'&&p<='Z'))) p=getchar(); return p; } int main() { int tii; scanf("%d",&tii); while(tii--) { int n,v[300],kl=0; char s[100],c[300],ch; bool fl[300],flag=true,flag2=true,fla=false; memset(v,false,sizeof(v)); memset(fl,true,sizeof(fl)); scanf("%d%s",&n,s); int ans1=num(s),ans2=0,f=0,x=0; for(int line=1;line<=n;line++){ ch=getch(); // while(ch=='\n' || ch==' ') ch=getchar(); if(ch=='E'){ v[c[f]]=false; if(f==kl){ kl=0; flag2=true; } if(!fl[f]) x--; fl[f--]=true; } else if(ch=='F') ++f; if(f<0 && !fla){ printf("ERR\n"); flag=false; fla=true; } if(ch=='F'){ bool bfl=false,cfl=false; ch=getch(); // ch=getchar(); c[f]=ch; if(v[ch] && !fla){ printf("ERR\n"); flag=false; fla=true; } else v[ch]=true; ch=getch(); //while(ch==' ') ch=getchar(); if(ch=='n'){ fl[f]=false; bfl=true; } int a=0; while(ch>='0' && ch<='9'){ a=a10+ch-48; ch=getchar(); } ch=getch(); // while(ch==' ') ch=getchar(); if(ch!='n'){ fl[f]=false; cfl=true; } int b=0; while(ch>='0' && ch<='9'){ b=b10+ch-48; ch=getchar(); } if(!fl[f]) ++x; // while(ch!='\n' && ch!='\r') ch=getchar(); if(((a>b && cfl) || bfl) && !(!cfl && bfl)){ flag2=false; kl=f; } // if(!cfl && bfl) flag2=true; } if(flag2) ans2=max(ans2,f-x); } if(flag && !fla){ if(f!=0){ printf("ERR\n"); } else{ if(ans1==ans2){ printf("Yes\n"); } else printf("No\n"); } } } return 0; } ``` 整理了一部分
by retired_treasure @ 2018-02-22 11:05:48


|