FreindX @ 2024-07-07 10:01:33
大神看看为什么RE
#include<bits/stdc++.h>
using namespace std;
long long n,m,p[100005],pp[100005],q;
int main(){
cin>>q;
for(int k=1;k<=q;k++){
cin>>n;
stack<long long> z;
long long s=1;
for(int i=1;i<=n;i++){
cin>>p[i];
}
for(int i=1;i<=n;i++){
cin>>pp[i];
}
for(int i=1;i<=n;i++){
while(pp[i]>=p[s]){
z.push(p[s]);
if(s==n){
break;
}
s++;
//cout<<z.top()<<' ';
}
if(z.top()==pp[i]){
z.pop();
}
else{
break;
}
}
if(z.empty()){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
return 0;
}
by jikky @ 2024-07-10 09:15:21
#include<bits/stdc++.h>
using namespace std;
long long n,m,p[100005],pp[100005],q;
int main(){
cin>>q;
for(int k=1;k<=q;k++){
cin>>n;
stack<long long> z;
long long s=1;
for(int i=1;i<=n;i++){
cin>>p[i];
}
for(int i=1;i<=n;i++){
cin>>pp[i];
}
for(int i=1;i<=n;i++){
/*
z.push(p[i]);
while(z.top()==pp[s]){
z.pop();
s++;
if(z.empty()){
break;
}
}
*/
while(pp[i]>=p[s]){
z.push(p[s]);
if(s==n){
break;//这里 break只跳出了while,for再循环一次就死循环了
}
s++;
//cout<<z.top()<<' ';
}
if(z.top()==pp[i]){//stack.top()的使用条件是栈不为空,这也是RE的原因
z.pop();
}
else{
break;
}
}
if(z.empty()){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
return 0;
}