cat_lover1 @ 2023-10-09 21:29:16
原题地址
事情是这样的,这道题开O2就错,不开O2就对
代码如下
#define G getchar()
static inline int r(){
int i=0,c;
while((c=G)<48);
for(;c>47;c=G)i=(i<<1)+(i<<3)+(c^48);
return i;
}main(){
int q=r();
while(q--){
int n=r();
int s[n+1],p[n+1],t[n+1],top=-1,x=0,q=0;
s[n]=p[n]=t[n]=-1;
for(int i=0;i<n;++i)s[i]=r();
for(int i=0;i<n;++i)p[i]=r();
while(q<n&&x<n){
if(top==-1)t[++top]=s[x++];
while(p[q]!=t[top])t[++top]=s[x++];
while(p[q]==t[top])--top,++q;
}
if(q<n)puts("No");
else puts("Yes");
}
}
by cat_lover1 @ 2023-10-09 21:45:12
地址贴错了,是这个: https://www.luogu.com.cn/record/128485982
by cat_lover1 @ 2023-10-09 21:46:06
就是初始化数组开一个定值,之前那个不是定值,是读进来的n
by zzr1208 @ 2023-10-09 21:48:26
这样好像会挂吧