记录编号 |
477006 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2017]时间复杂度 |
最终得分 |
100 |
用户昵称 |
Hallmeow |
是否通过 |
通过 |
代码语言 |
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;
}