写的和题解有一点不同,但是自己挑不出问题,希望大佬可以指正错误,或者给个hack数据也万分感谢
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int st[100010],stt=0,a[100010],b[100010];
int main() {
int tt;
cin>>tt;
for(int t=1; t<=tt; t++) {
int n,last=0,judge=0;
cin>>n;
memset(st,0,sizeof(st));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
stt=0;
//a是入栈序列
//b记录每个数是第几个入栈的
for(int i=1; i<=n; i++) {
cin>>a[i];
b[a[i]]=i;
}
for(int i=1; i<=n; i++) {
int now;
cin>>now;
if(b[now]>last) {
for(int j=last+1; j<b[now]; j++) st[++stt]=j;
last=b[now];
} else if(b[now]<last) {
if(b[now]!=st[stt]) {
judge=1;
break;
}
stt--;
}
}
if(judge==0) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}