82分求助
  • 板块学术版
  • 楼主wangczz
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/2 16:19
  • 上次更新2025/8/2 17:07:16
查看原帖
82分求助
765712
wangczz楼主2025/8/2 16:19

题目传送门 错误情况

#include<bits/stdc++.h>
using namespace std;
map<char,int> mp;
stack<char> T;
int ner[100010],len;
int num(string s){
	int sum=1,ans=0;
	for(int i=s.size()-1;i>=0;i--){
		if('0'<=s[i]&&s[i]<='9'){
			ans+=(s[i]-'0')*sum;
			sum*=10;
		}
		else if(i!=s.size()-1) break;
	}
	return ans;
}
int main(){
	cin.tie(nullptr) -> ios::sync_with_stdio(false);
    int t; cin>>t; 
    while(t--){
        mp.clear(); while(!T.empty()) T.pop();
        memset(ner,0,sizeof(ner)); len=0;
        int p,sum1=0,sum2=0,sum3=0,mx=0,flg=0;
        string s; 
        cin>>p>>s;
        while(p--){
            char F,a; string b,c;
            cin>>F;
            if(F=='F'){
                cin>>a>>b>>c;
                if(mp[a]!=1){ mp[a]=1; T.push(a);} 
                else{ flg=1;}
                sum1++;
                if( (b=="n")&&('0'<=c[0]&&c[0]<='9')||('0'<=b[0]&&b[0]<='9')&&('0'<=c[0]&&c[0]<='9')&&num(b)>num(c))
					{ner[++len]=3; sum3++;} 
                
                if( ('0'<=b[0]&&b[0]<='9')&&('0'<=c[0]&&c[0]<='9') || b==c) 
                    if(sum3==0){ ner[++len]=1;}
                    
                if( ('0'<=b[0]&&b[0]<='9')&&(c=="n") ){
                    if(sum3==0){
                    	ner[++len]=2;
                        sum2++;
                        mx=max(mx,sum2);
                    }
                }
            } 
            else if(F=='E'){
                sum1--;
                if(!T.empty()){
                	char cn=T.top();
	                mp[cn]=0;
	                T.pop();
				}
                if(ner[len]==2) sum2--;
                if(ner[len]==3) sum3--;
                len--;
            }
        }
        if(flg==1||sum1!=0) cout<<"ERR\n";
        else{
            if(mx==0&&s.size()==4) cout<<"Yes\n";
            else if(mx==0) cout<<"No\n";
            if(mx!=0&&s.size()>4){
                if(num(s)==mx) cout<<"Yes\n";
                else cout<<"No\n";
            }
            else if(mx!=0) cout<<"No\n";
        }
//        cout<<mx<<'\n';
    }
} 
2025/8/2 16:19
加载中...