81分求调
查看原帖
81分求调
950758
zhangze3楼主2024/8/17 14:23
#include <bits/stdc++.h>
using namespace std;
int t,L;
int w,bw,leno;
string s,a[100005],x,y,z,O;
int qpower(int a,int b){
	int ans=1;
	while(b){
		if(b&1)
			ans*=a;
		a*=a;
		b>>=1;
	}
	return ans;
}
bool ask(string c,int cnt){
    for(int i=0;i<=cnt;i++)
        if(a[i]==c)
            return 0;
    return 1;
}
int askw(string c,int len){
	int tmp=0,ans=0;
	for(int i=leno-2;i>=4;i--){
		int num=(int)c[i]-48;
		ans+=num*qpower(10,tmp);
		tmp++;
	}
	return ans;
}
int main(){
//	freopen("P3952_6.in","r",stdin);
    a[0]="n";
    cin>>t;
    for(int i=1;i<=t;i++){
    	bool flag=1,b=1,flag1=1;
    	int ans=0;
    	int cntf=0;
        int cnt=0;
        bw=0;
        w=0;
        cin>>L;
        cin>>O;
        leno=O.size();
        for(int j=1;j<=L;j++){
            cin>>s;
            if(s=="F"){//F x y z
				
            	int num11=(int)y[0]-48;
            	int num22=(int)z[0]-48;
            	cntf++;
                cin>>x>>y>>z;// int x=y;x<=z;x++
                if(ask(x,cnt))
                    a[++cnt]=x;
                else{
                    flag=0;
                }
                if(y=="n"&&z!="n"||num11>num22){//int x=n;x<=1;x++;
            		b=0;
        	    }
				if((y!="n"&&z=="n")&&b==1){//int x=1;x<=n;x++
                	bw++;
					w=max(w,bw);
            	}
            	
			//	cout<<w<<" "<<bw<<"\n"; 
            }
            if(s=="E"){
            	cntf--;
            	bw--;
            	if(cntf<0)
            		flag1=0;
			}
			if(cntf==0){
				
				bw=0;
				b=1;
				cnt=0;
			}
        }
        if(flag==0){
        	cout<<"ERR\n";
        	continue;
		}

        if(cntf!=0){
        	cout<<"ERR\n";
        	continue;
		}
        if(leno==4){
        	if(w==0)
        		cout<<"Yes\n";
        	else
        		cout<<"No\n";
        	continue;
		}
		if(leno>4){
			if(w==askw(O,leno))
				cout<<"Yes\n";
			else
				cout<<"No\n";
			continue;
		}
    }
    return 0;
}
2024/8/17 14:23
加载中...