不明RE
查看原帖
不明RE
112631
Lovable_Wind楼主2022/4/27 21:55
#include<bits/stdc++.h>
using namespace std;
const double pi=3.14;
const int inf=0x3f3f3f3f;
const int NIL=-1;
const int MOD=1e9+7;
#define f(i,l,r) for(int i=l;i<=r;i++)
int domath(string x){
	if (x=="n") return inf;
	int len=x.size(),c=1,num=0;
	for (int i=len-1;i>=1;i--){
		num+=(c*int(x[i]-48));
		c*=10;
	}
	return num;
}
/*string makestring(int x){
	char final[100];
	if (x==0){
		final[0]='O';
		final[1]='(';
		final[2]='n';
		final[3]='^';
	}else{
		//final="O(n^";
		final[0]='O';
		final[1]='(';
		final[2]='n';
		final[3]='^';
		cout<<final<<endl; 
		int i=4;
		while(x>0){
			int num=x%10;
			final[i]=char(num+48);
			x/=10;
			i++;
		}
		final[i]==')';
	}
	return final;
}*/
int judge(string x,int num,bool flag){
	if (x[2]=='n'){
		int c=1,numm=0;
		for (int i=x.size()-2;i>=4;i--){
			numm+=(c*int(x[i]-48));
			c*=10;
		}
		if (flag==1){
			if (num==numm) return 1;
			else return 0;
		}else{
			return 0;
		}
	}else{
		if (flag==0) return 1;
		else return 0;
	}
}
int solve(){
	int IMF;
	stack<char> s;
	string jud;
	bool flag=0;
	int vis[30]={};// In order to judge if the letter has been used.
	int n,sumf,maxf,maxx,flagm=-1;//sumf records the sum of Function,maxf records maxnumber of the covered F.
	sumf=maxf=0;
	maxx=-inf;
	cin>>n;
	cin>>jud;
	for (int i=1;i<=n;i++){
		char opt;
		cin>>opt;
		//if (flag==1&&opt=='F') continue;
		if (opt=='F'){
			char a;
			string b,c;
			cin>>a;
			cin>>b>>c;
			if (vis[int(a-48)]==1) {IMF=-1;}
			if (a>'z'||a<'a') {IMF=-1;}
				
				int bb=domath(b);
				int cc=domath(c);
				if (bb>cc){
					sumf++;
					vis[int(a-48)]=1;
					s.push(a);
					flag=1;
					flagm=sumf;
					//continue;
				}else if (bb==cc){
					sumf++;
					vis[int(a-48)]=1;
					s.push(a);
				}else if (bb<cc){
					sumf++;
					if (flag!=1)maxf++;
					vis[int(a-48)]=1;
					s.push(a);
				}
			
		}else{
			if (flag==1&&flagm==sumf) flag=0,flagm=-1;
			if (s.empty()) {IMF=-1;}
			vis[int(s.top()-48)]=0;
			s.pop();
			maxx=max(maxf,maxx);
			sumf--;
			maxf--;
		}
	}
	if (sumf!=0||IMF==-1) {return -1;}
	//string ans=makestring(maxx);
	//cout<<ans<<endl;
	if (maxx==0){
		return judge(jud,maxx,0);
	}else{
		return judge(jud,maxx,1);
	}
}
int read()
{
    int ans=0,flag=1;
    char ch=getchar();
    while( (ch>'9' || ch<'0') && ch!='-' ) ch=getchar();
    if(ch=='-') flag=-1,ch=getchar();
    while(ch>='0' && ch<='9') ans=ans*10+ch-'0',ch=getchar();
    return ans*flag;
}
int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int T;
	cin>>T;
	while(T--){
		int g=solve();
		if (g==0){
			cout<<"No"<<endl;
		}else if (g==1){
			cout<<"Yes"<<endl;
		}else{
			cout<<"ERR"<<endl;
		}
	}
	return 0;
}

这边Dev上自测是能过第一个数据的...评测姬给的全部RE,返回的是代Received signal 11

2022/4/27 21:55
加载中...