#include<bits/stdc++.h>
using namespace std;
stack <int> s;
int p[100010],o[100010];
void c(void)
{
while(!s.empty())
{
s.pop();
}
}
int main()
{
int q;
cin>>q;
for(int i=1;i<=q;i++)
{
int n;
cin>>n;
int a;
for(int i=1;i<=n;i++) cin>>p[i];
for(int i=1;i<=n;i++) cin>>o[i];
int flag=1//输入输出
for(int i=1;i<=n;i++)
{
if(p[i]==o[flag]) flag++;
else s.push(p[i]);
}//如果入栈的同时可以出栈,就出栈
bool k=1;
while(!s.empty())
{
if(s.top()==o[flag])
{
s.pop();
flag++;
}
else
{
k=0;
cout<<"No"<<endl;
break;
}
}//能否按照剩下的数列出栈
if(k) cout<<"Yes"<<endl;
c();//清空栈
}
return 0;
}
暂时还没找到不符合代码的情况,请求指教