NOIP 2017 Day1 题2: 时间复杂度 栈

来源:互联网 发布:pdf电子书资源 知乎 编辑:程序博客网 时间:2024/06/06 01:00
#include <bits/stdc++.h>
using namespace std;bool used[128];stack<char> s;int getResult(string ss){     if(ss[2]=='1') return 0;     else return( ss[4]-'0'  );;}string solve(){    while(!s.empty()) s.pop();    memset(used , false, sizeof(used));    int  L; cin>> L;    int ans=0;    int his_ans=0;    int mm=0;    string ss; cin>>ss;    his_ans = getResult(ss);    for(int i=1;i<=L; i++){        char EF; cin >>EF;        if(EF=='F'){            char  v;cin>>v; //不能用int 不用用i变量            if( used[(int)v]==true) return "ERR";  else used[(int)v]=true;            string x,y; cin>>x>>y;  //刚开始用char 当 样例中为10时候,不通过            if(   y=="n" ) {  s.push('F');}            if(   x=="n" )  s.push('f');  //怎么办        }        else if(EF=='E'){            if( !s.empty() && s.top()=='F' ) {s.pop(); ans++;}            if( !s.empty() && s.top()=='f' ) { s.pop();  ans=0;}           //else s.push('E');   //这里错了        }        if(s.empty()){ mm = max( mm,ans); ans=0;}     }        if(!s.empty()) return "ERR";        if( mm == his_ans) return "Yes";        else  return "No";        return "UNKOWn";}int main(){    int t;cin>>t;    while(t--){        cout << solve()<<endl;    }       return 0;}
  通过了三组数据