求助大佬,自己造的数据都没有问题,只能拿20分
查看原帖
求助大佬,自己造的数据都没有问题,只能拿20分
115652
littlegagaduck楼主2021/7/21 12:03

写的和题解有一点不同,但是自己挑不出问题,希望大佬可以指正错误,或者给个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;
}
2021/7/21 12:03
加载中...