```cpp
#include <bits/stdc++.h>
using namespace std;
int l;
bool vis[355];
char str[105];
struct node{
char ch,st,en;
int who,num,num1,num2;
};
stack <node> st;
void init(){
scanf("%d",&l);
getchar();
scanf("%[^\n]",str);
getchar();
memset(vis,false,sizeof(vis));
}
bool con(char s){
return s>='0'&&s<='9';
}
bool check(node s1,node s2){
if(s1.ch!=s2.ch||s1.st!=s2.st||s1.en!=s2.en) return false;
if(s1.who!=s2.who||s1.num!=s2.num||s1.num1!=s2.num1||s1.num2!=s2.num2) return false;
return true;
}
void solve(){
init();
char tmp[105];
bool tag=false;
int tot=0,er=0,mul=0,tp=0;
node dep;
dep.ch='#';
int box[10101]={0};
while(l--){
scanf("%[^\n]",tmp);
getchar();
if(tmp[0]!='E'){
int cnt=-1;
node flag;
flag.num1=0;
flag.num2=0;
for (int i=0;i<strlen(tmp);i++){
if(tmp[i]!=' '&&tmp[i]!='\n') cnt++;
else continue;
if(cnt==1) flag.ch=tmp[i];
if(con(tmp[i])){
flag.num++;
while(con(tmp[i])){
if(cnt==2) flag.num1*=10,flag.num1+=tmp[i]-'0';
if(cnt==3) flag.num2*=10,flag.num2+=tmp[i]-'0';
i++;
}
continue;
}
if(cnt==2) flag.st=tmp[i];
if(cnt==3) flag.en=tmp[i];
}
tot++;
tp=max(tp,tot);
if(vis[int(flag.ch)]==true&&(!tag)) tag=true,er=tot;
vis[int(flag.ch)]=true;
if((flag.num2!=0&&flag.st=='n')||(flag.num1!=0&&flag.num2!=0&&flag.num1>flag.num2))
dep=flag;
st.push(flag);
mul=0;
}
else{
if(st.empty()){tag=true;continue;}
node nw=st.top();
st.pop();
if(check(dep,nw)){dep.ch='#';tot--;vis[int(nw.ch)]=false;continue;}
if((nw.num1!=0&&nw.num2!=0&&nw.num1<=nw.num2)||(nw.st=='n'&&nw.en=='n')||dep.ch!='#'){tot--;vis[int(nw.ch)]=false;continue;}
if(nw.num1!=0&&nw.en=='n')
box[tot]=max(++mul,box[tot]);
tot--;
vis[int(nw.ch)]=false;
}
}
if(!st.empty()){
printf("ERR\n");
while(!st.empty())
st.pop();
return;
}
if(tag){
printf("ERR\n");
return;
}
for (int i=109;i>=1;i--)
box[i]=max(box[i+1],box[i]);
int ans=box[1];
if(ans==0&&str[2]=='1'){
printf("Yes\n");
return;
}
int tim=0;
for (int i=4;i<strlen(str)-1;i++){
tim*=10;
tim+=str[i]-'0';
}
if(tim==ans){
printf("Yes\n");
return;
}
printf("No\n");
return;
}
int main(){
int t;
scanf("%d",&t);
while(t--)
solve();
}
/*
1
18 O(n^4)
F a 5 71
F b 35 n
F c 90 94
F d 45 19
F e 1 n
F f 86 n
F g 49 n
E
E
E
E
E
E
E
F a 62 n
F b 82 85
E
E
*/
```
by 正经的普通人 @ 2022-10-06 12:26:32
注释不用管……
by 正经的普通人 @ 2022-10-06 12:27:01
见
https://www.luogu.com.cn/discuss/606800
by Zzzcr @ 2023-05-11 21:32:03