求助37pts,样例过
查看原帖
求助37pts,样例过
661913
liwenxi1145144444楼主2023/8/14 12:38
#include<bits/stdc++.h>
using namespace std;
int t,xun[105];
string ch1[105],ch2[105],ch3[105];
map<string,bool> vis;
int main(){
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		char ch;
		cin>>ch>>ch>>ch;
		memset(xun,0,sizeof(xun));
		vis.clear();
		int cnt1=0,cnt2=0,flag=0,flag2=0;
		if(ch=='1'){
			char asdasasf;
			cin>>asdasasf;
			for(int i=1;i<=n;i++){
				cin>>ch;
				if(ch=='F'){
					cnt1++;
					cin>>ch1[cnt1]>>ch2[cnt1]>>ch3[cnt1];
					if(vis[ch1[cnt1]]){
						flag2=3;
					}else{
						vis[ch1[cnt1]]=1;
						if(ch2[cnt1][0]>='0'&&ch2[cnt1][0]<='9'){
							if(ch3[cnt1][0]>='0'&&ch3[cnt1][0]<='9'){
								xun[cnt1]=1;
							}else{
								xun[cnt1]=2;
							}
						}else{
							if(ch3[cnt1].size()<3){
								xun[cnt1]=3;
							}else{
								xun[cnt1]=2;
							}
						}
					}
				}else{
					cnt2++;
					if(flag2==3){
						xun[cnt1]=0;
						vis[ch1[cnt1]]=0;
						continue;
					}
					for(int i=1;i<=cnt1;i++){
						if(xun[i]==3){
							break;
						}
						if(xun[i]==2){
							flag=1;
							break;
						}
					}
					if(flag&&flag2!=1){
						flag2=2;
					}
					if(!flag&&flag!=2){
						flag2=1;
					}
					xun[cnt1]=0;
					vis[ch1[cnt1]]=0;
				}
			}
			if(cnt1!=cnt2||flag2==3){
				cout<<"ERR\n";
			}else{
				if(flag2==1){
					cout<<"Yes\n";
				}else if(flag2==2){
					cout<<"No\n";
				}
			}
		}else{
			int x;
			cin>>ch>>x>>ch;
			for(int i=1;i<=n;i++){
				cin>>ch;
				if(ch=='F'){
					cnt1++;
					cin>>ch1[cnt1]>>ch2[cnt1]>>ch3[cnt1];
					if(vis[ch1[cnt1]]&&flag2!=3){
						flag2=3;
					}else{
						vis[ch1[cnt1]]=1;
						if(ch2[cnt1][0]>='0'&&ch2[cnt1][0]<='9'){
							if(ch3[cnt1][0]>='0'&&ch3[cnt1][0]<='9'){
								xun[cnt1]=1;
							}else{
								xun[cnt1]=2;
							}
						}else{
							if(ch3[cnt1].size()<3){
								xun[cnt1]=3;
							}else{
								xun[cnt1]=2;
							}
						}
					}
				}else{
					cnt2++;
					if(flag2==3){
						xun[cnt1]=0;
						vis[ch1[cnt1]]=0;
						continue;
					}
					int sum=0;
					for(int i=1;i<=cnt1;i++){
						if(xun[i]==3){
							break;
						}
						if(xun[i]==2){
							sum++;
						}
					}
					if(sum==x&&flag2!=2){
						flag2=1;
					}
					if(sum!=x&&flag2!=1){
						flag2=2;
					}
					xun[cnt1]=0;
					vis[ch1[cnt1]]=0;
				}
			}
			if(cnt1!=cnt2||flag2==3){
				cout<<"ERR\n";
			}else{
				if(flag2==1){
					cout<<"Yes\n";
				}else{
					cout<<"No\n";
				}
			}
		}
	}
	return 0;
}
2023/8/14 12:38
加载中...