36分一坨求大佬们帮!
查看原帖
36分一坨求大佬们帮!
1008007
whxhw楼主2025/7/30 17:00
#include<bits/stdc++.h>
using namespace std;
int t,a[50];
int main(){
	cin>>t;
	while(t--){
		int l,totf=0,flag=1,totn=0,ans=0;
		memset(a,0,sizeof(a));
		string s;
		stack<char>st;
		cin>>l>>s;
		for(int i=1;i<=l;i++){
			char x;
			cin>>x;
			if(x=='F'){
				if(totf==0){
					ans=max(totn,ans);totn=0;
				}
				totf++;
				char s1;
				string s2,s3;
				cin>>s1>>s2>>s3;
				if(a[s1-'a'+1]!=0){
					flag=0;
					break;
				}
				st.push(s1);
				a[s1-'a'+1]++;
				if(s2==s3)continue;
				if(s3=="n")totn++;
			}
			else{
				totf--;
				a[st.top()-'a'+1]--;
				if(!st.empty())st.pop();
			} 
		}
		if(totf==0){
			ans=max(totn,ans);totn=0;
		}
		if(flag==0||totf!=0){
			cout<<"ERR\n";continue;
		}
		if(s=="O(1)"){
			if(totn==ans)cout<<"Yes\n";
			else cout<<"No\n";
		}
		else{
			if(s[s.size()-2]-'0'==ans)cout<<"Yes\n";
			else cout<<"No\n";
		}
	}
	return 0;
}
2025/7/30 17:00
加载中...