救命啊qwq

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    for(int u=0;u<t;u++)
    {
        int n;
        cin>>n;
        stack<int> a;
        stack<int> b;
        for(int i=0;i<n;i++)
        {
            int x;
            cin>>x;
            a.push(x);
        }
        bool e=0;
        for(int i=0;i<n;i++)
        {
            int x;
            cin>>x;
            while(!a.empty())
            {
                b.push(a.top());
                a.pop();
                if(b.top()==x)
                {
                    e=1;
                    break;
                }
            }
        }
        if(!e)
        {
            cout<<"No"<<endl;
            continue;
        }
        cout<<"Yes"<<endl;
    }
    return 0;
}

WA40分球条

童鞋,问问题之前请发一下题面

抱歉抱歉,只给了题号,耽误了dalao时间

1. 验证栈序列

题目ID:8616必做题100分

最新提交:

Wrong Answer

40 分

历史最高:

Wrong Answer

40 分

时间限制: 1000ms

空间限制: 524288kB

题目描述

给出 pushed 和 poped 两个序列,其取值从 1 到 n(n≤100000)。已知入栈序列是 pushed,如果出栈序列有可能是 poped,则输出 Yes,否则输出 No。每个测试点有多组数据。

输入格式

第一行输入一个正整数 T,表示数据组数。对于每组数据,第一行输入一个正整数 n;第二行输入 n 个正整数,表示入栈序列;第三行输入 n 个正整数,表示出栈序列。

输出格式

对于每组数据单独输出一行 Yes 或 No。

样例

Input 1

1 5 1 2 3 4 5 4 5 3 2 1

Output 1

Yes

Input 2

1 5 1 2 3 4 5 3 5 2 4 1

Output 2

No

样例解释

对于第一个测试样例,入栈序列为 1 2 3 4 5,出栈序列为 4 5 3 2 1,可以通过以下操作得到出栈序列:先将 1、2、3 依次入栈,然后将 3、2、1 依次出栈,再将 4、5 依次入栈,最后将 5、4 依次出栈,故输出 Yes。
对于第二个测试样例,入栈序列为 1 2 3 4 5,出栈序列为 3 5 2 4 1,无法通过栈的操作得到出栈序列,故输出 No。

数据范围

n≤100000

为什么b.top()=x就直接是yes了,不应该要全部满足吗

给你一个错误样例
1
5
1 2 3 4 5
5 1 2 3 4

改为if(b.top!=x)

改为e=0

要全部满足,不能只满足一个。

全WA了qwq

对不起,我刚刚没仔细看,现在再看一下。

还有你的

没改。

不加break

是 AC 的思路吗

1 个赞

不知道,没测。

1 个赞

6666(本来说给个解决方案的)

2 个赞