记录编号 477006 评测结果 AAAAAAAAAA
题目名称 [NOIP 2017]时间复杂度 最终得分 100
用户昵称 GravatarHallmeow 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2017-11-28 16:53:17 内存使用 0.33 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#define pos(i,a,b) for(int i=(a);i<=(b);i++)
#define N 1010
using namespace std;
#define LL long long
int t,len,num;
char s[N];
int numf,haha;
int lastbian[N];
int biaoji[N],flag;
int cnt,dep;
int chang[N];
void work(){
	pos(i,1,len){
		char c;cin>>c;
		if(c=='F'){
			char ii,x,y;cin>>ii;
			int numx(0),numy(0);
			
			x=getchar();
			while(x==' ') x=getchar();
			if(x=='n') numx=-1,x=getchar();
			else{
				while(x>='0'&&x<='9'){
					numx=numx*10+x-'0';
					x=getchar();
				}
			}
			
			while(x==' ') x=getchar();
			if(x=='n') numy=-1,x=getchar();
			else{
				while(x>='0'&&x<='9'){
					numy=numy*10+x-'0';
					x=getchar();
				}
			}
			if(biaoji[ii-'a'])	flag=1;
			if(flag) continue;
			
			biaoji[ii-'a']=1;numf++;
			lastbian[++lastbian[0]]=ii-'a';
			if(numx==-1&&numy==-1){
				if(haha==0) chang[numf]=1;
				continue;
			}
			else{
				if(numx!=-1&&numy==-1){
					if(haha==0){
						dep++;if(dep>cnt) cnt=dep;
					}
				}
				else{
					if(numx==-1&&numy!=-1){
						if(haha==0) haha=numf;
					}
					else{
						if(numx>numy){
							if(haha==0) haha=numf;
						}
						else{
							if(haha==0) chang[numf]=1;
						}
					}
				}
			} 	
		}
		else{
			if(numf<=0)	flag=1;
			if(flag) continue;
			biaoji[lastbian[lastbian[0]--]]=0;
			if(haha==0&&chang[numf]==0) dep--;
			if(numf==haha) haha=0;
			numf--;
		}
	}
	if(numf>0) flag=1;
	return;
}
int main(){
	freopen("2017complexity.in","r",stdin);
	freopen("2017complexity.out","w",stdout);
	scanf("%d",&t);
	while(t--){
		memset(biaoji,0,sizeof(biaoji));
		memset(chang,0,sizeof(chang));
		haha=flag=cnt=lastbian[0]=num=numf=dep=0;
		scanf("%d",&len);
		scanf("%s",s+1);int l=strlen(s+1);
		if(l==4) num=0;
		else{
			pos(i,5,l-1) num=num*10+s[i]-'0';
		}
		work();
		if(flag){
			cout<<"ERR"<<endl;
		}
		else{
			if(cnt==num) cout<<"Yes"<<endl;
			else cout<<"No"<<endl;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}