求调,WA最后两个点
查看原帖
求调,WA最后两个点
443023
chenkuo楼主2023/10/19 12:30
#include<bits/stdc++.h>
using namespace std;
int t,n,m[10001],ans;
string ti;
char s[100000];
int st[100000],z;
int change(string a){
	if(a=="n") return -1; 
	int x=0;
	for(int i=0;i<a.size();i++) x=x*10+a[i]-'0';
	return x;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--){
		memset(m,0,sizeof(m));
		cin>>n>>ti;z=0;ans=0;
		int x=0,l=0;
		if(ti[2]!='1')
		for(int i=4;i<ti.size()-1;i++)	x=x*10+ti[i]-'0';
		while(n--){
			char ch;
			string a,b;
			cin>>ch;
			if(ch=='F'){
				char cc;
				cin>>cc;
				if(m[cc]){
					l=1;break;
				}
				m[cc]=1;
				cin>>a>>b;
				if(a=="n"&&b=="n") st[++z]=0,s[z]=cc;
				else if(change(a)!=-1&&change(b)==-1) st[++z]=1,s[z]=cc;
				else if(change(a)==-1||change(a)!=-1&&change(b)!=-1&&change(a)>change(b)){
					int ls=z;
					z++;m[cc]=0;
					while(z!=ls){
						cin>>cc;
						n--;
						if(cc=='E')	z--;
						else cin>>cc>>a>>b,z++;
					}
					int ll=0;
					for(int i=1;i<=z;i++) ll+=st[i];
					ans=max(ans,ll);
				}else if(change(a)!=-1&&change(b)!=-1) st[++z]=0,s[z]=cc;
			}else{
				if(z==0){
					char cc;
					while(n--){
						cin>>cc;
						if(cc=='F') cin>>cc>>a>>b;
					}
					l=1;break;
				}
				m[s[z]]=0;
				int ls=0;
				for(int i=1;i<=z;i++) ls+=st[i];
				ans=max(ans,ls);z--;
			}
		}
		if(l==1||z>0) cout<<"ERR\n";
		else{
			if(ans==x) cout<<"Yes\n";
			else cout<<"No\n";
		}
	}
}
2023/10/19 12:30
加载中...