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