蒟蒻求助
查看原帖
蒟蒻求助
699271
gaojizhe05楼主2023/11/18 08:23

测试点信息

只过前两个点,后面全部WA,求大佬帮忙调一下代码,谢谢!

错误代码

#include <bits/stdc++.h>
using namespace std;
int T;
int L;
string O;
char c[105],x[105];
bool y[105],z[105];
int f[105];
bool use[27];
bool add;
int zero;
int cnt,o,ans=0,now=0; 
vector <int> v;
int get_O(){
	if(O[2]=='1') return 0;
	else if(O.length()==6) return O[4]-'0';
	else return 10*(O[4]-'0')+O[5]-'0';
}
void Init(){
	cin>>L>>O;
	for(int i=1;i<=L;i++){
		//cout<<i<<"  ";
		cin>>c[i];
		//cout<<c[i]<<endl;
		if(c[i]=='F'){
			string p,q;
			cin>>x[i]>>p>>q;
			if(p=="n") y[i]=1;
			else y[i]=0;
			if(q=="n") z[i]=1;
			else z[i]=0;
		}
	}
}
void Work(){
	v.clear();
	cnt=0;
	add=1;
	ans=now=0;
	for(int i=0;i<=26;i++) use[i]=0;
	o=get_O();
	//cout<<o<<endl;
	for(int i=1;i<=L;i++){
		if(c[i]=='F'){
			cnt++;
			v.push_back(i);
			if(use[x[i]-'a']==1){
				cout<<"EER\n";
				return;
			}
			use[x[i]-'a']=1;
			if(add==0) continue;
			if(y[i]==0&&z[i]==1){
			    now++;
			    f[i]=1;
			}
			else if(y[i]==1&&z[i]==0){
			    add=0;
			    zero=i;
			    f[i]=0;
			}
			else f[i]=0;
		}
		else if(c[i]=='E'){
			cnt--;
			if(cnt<0){
				cout<<"ERR\n";
				return;
			}
			int s=v.front();
			v.pop_back();
			if(add) now-=f[i]; 
			if(s==zero) add=1;
			ans=max(ans,now);
			use[x[i]-'a']=0;
		}
		//cout<<ans<<' '<<now<<endl;
	}
	if(cnt!=0) cout<<"ERR\n"; 
    else if(now==o) cout<<"Yes\n";
	else cout<<"No\n";
}
int main(){
	cin>>T;
	while(T--){
		Init();
		Work();
	}
	return 0;
}
2023/11/18 08:23
加载中...