[NOIP2017]时间复杂度(模拟)

sscanf读入数字,getline(cin,string)读一整行,其余暴力模拟即可。

 1 #include<cstdio>
 2 #include<string>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<algorithm>
 6 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 7 typedef long long ll;
 8 using namespace std;
 9 
10 const int N=110;
11 int T,n,w[N];
12 char p[N],s[N];
13 string str;
14 
15 int main(){
16     freopen("comp.in","r",stdin);
17     freopen("comp.out","w",stdout);
18     for (scanf("%d",&T); T--; ){
19         scanf("%d%s",&n,p); int d,ans=0,top=0; bool flag=0;
20         if (p[2]=='1') d=0; else sscanf(p+4,"%d",&d);
21         rep(i,1,n){
22             if (flag) { getline(cin,str); continue; }
23             scanf("%s",p);
24             if (p[0]=='F'){
25                 scanf("%s",p); s[++top]=p[0]; int x=0,a,b;
26                 scanf("%s",p); if (p[0]=='n') a=101; else sscanf(p,"%d",&a);
27                 scanf("%s",p); if (p[0]=='n') b=101; else sscanf(p,"%d",&b);
28                 if (a>b) w[top]=0;
29                     else if (a<b && b==101) w[top]=2; else w[top]=1;
30                 rep(j,1,top-1) if (s[j]==s[top]) flag=1;
31                 rep(j,1,top){
32                     if (!w[j]) break;
33                     if (w[j]==2) x++;
34                 }
35                 ans=max(ans,x);
36             }else flag|=(--top<0);
37             scanf("\n");
38         }
39         flag|=top>0; puts(flag?"ERR":ans==d?"Yes":"No");
40     }
41     return 0;
42 }

 

posted @ 2018-10-24 00:52  HocRiser  阅读(250)  评论(0编辑  收藏  举报