milai @ 2024-09-25 20:36:43
CODE
#include<bits/stdc++.h>
using namespace std;
int input,output,a[114514],b[114514];
int main(){
int T,n;
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&input);
a[input]=i;
}
for(int i=1;i<=n;i++){
scanf("%d",&output);
b[a[output]]=i;
}
// for(int i=1;i<=n;i++){
// printf("%d ",a[i]);
// }
// cout<<'\n';
// for(int i=1;i<=n;i++){
// printf("%d ",b[i]);
// }
// cout<<'\n';
// cout<<'\n';
bool ok=1;
int minn=b[1];
for(int i=2;i<=n;i++){
if(b[i]>minn){
ok=0;
break;
}
minn=min(minn,b[i]);
}
if(ok){
cout<<"Yes\n";
}else{
cout<<"No\n";
}
}
return 0;
}
by milai @ 2024-09-28 10:28:08
已暴力,求放过(还是0pts)
#include<bits/stdc++.h>
using namespace std;
int in[114514],out[114514];
int main(){
int n,q;
cin>>q;
while(q--){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&in[i]);
}
for(int i=1;i<=n;i++){
scanf("%d",&out[i]);
}
int cnt1=2,cnt2=1;
stack<int> st;
st.push(in[1]);
while(cnt1<=n+1&&cnt2<=n+1&&!st.empty()){
if(st.top()!=out[cnt2]){
if(cnt1>n+1){
break;
}
st.push(in[cnt1++]);
}
if(st.top()==out[cnt2]&&!st.empty()){
cnt2++;
st.pop();
}
// cout<<cnt1<<' '<<cnt2<<'\n';
}
if(cnt1==n+1&&cnt2==n+1){
cout<<"Yes\n";
}else{
cout<<"No\n";
}
}
return 0;
}
by milai @ 2024-09-28 10:37:08
老实了,模拟已过,此贴完