记录编号 476181 评测结果 AAAAAAAAAA
题目名称 [NOIP 2017]时间复杂度 最终得分 100
用户昵称 GravatarShirry 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2017-11-21 22:33:53 内存使用 0.34 MiB
显示代码纯文本
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1100;
int t,n,f,tot,goo,u,x,y,w,g[maxn],num[maxn],vis[maxn],tim[maxn];
char op,a[maxn],b[maxn],s[maxn],tmp[maxn];
string d,p[maxn];
bool flag=true,pp;
bool work(){
	int len=strlen(a)-1;x=y=0;
	for(int i=0;i<=len;i++)x=x*10+a[i]-'0';
	if(b[0]=='n'&&a[0]!='n'){
		tim[f]++;pp=true;
		return true;
	}
	else{
		int len=strlen(b)-1;
		for(int i=0;i<=len;i++)y=y*10+b[i]-'0';
	}
	if(x>y)return false;
	return true;
}
bool cal(){
	int len=strlen(s)-1;
	int k=0,start=2;
	if(s[2]=='n'&&s[3]=='^')start=4;
	if(s[2]=='n'&&s[3]=='^'&&!pp)return false;
	for(int i=start;i<=len-1;i++)k=k*10+s[i]-'0';
	if(k==w)return true;
	else return false;
}
int main(){
	freopen("2017complexity.in","r",stdin);
	freopen("2017complexity.out","w",stdout);
	scanf("%d",&t);
	while(t--){
		memset(tim,0,sizeof(tim));
		memset(vis,0,sizeof(vis));
		memset(g,0,sizeof(g));
		x=y=w=f=goo=u=pp=0;
		flag=true;		
		scanf("%d ",&n);
		scanf("%s ",s);
		for(int i=1;i<=n;i++){
			scanf("%c",&op);
			if(op=='F'){
				f++;u=max(f,u);
				cin>>d;
				for(int j=1;j<=f;j++){
					if(p[j].compare(d)==0&&vis[j]){
						goo=1;break;
					}
				}
				cin>>a>>b;gets(tmp);
				if(b[0]!='n'&&a[0]=='n'){
					g[f]=1;
					flag=false;
				}
				else if(flag)flag=work();
				if(flag)p[f]=d,vis[f]=1;
				else g[f]=1;
			}
			if(op=='E'){
				gets(tmp);
				int ff=0;
				for(int j=1;j<=u;j++){
					if(tim[j])ff++;
				}
				w=max(w,ff);
				if(tim[f])tim[f]--;
				vis[f]=0,f--;
				if(f<0)goo=1,f=0;
				flag=1-g[f];
				
			}
		}
		if(f||goo){
			printf("ERR\n");continue;
		}
		
		if(!w)w=1;
 		if(cal())printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}