1 条题解
-
0
直接模拟题目中说的
pushed
和poped
两个序列。其实就是验证一个序列的出栈和入栈序列是否合法。直接模拟就行了 不过要注意是多测,栈要清空,不然会WA
。#include <iostream> #include <stack> using namespace std; #define int long long const int N = 1e5+5; int q, n, a, b[N], c[N]; stack<int> s; signed main() { cin >> q; while (q--) { cin >> n; int ans=1; for (int j = 1; j <= n; j++) { cin >> b[j]; } for (int j2 = 1; j2 <= n; j2++) { cin >> c[j2]; } for (int j3 = 1; j3 <= n; j3++) { s.push(b[j3]); while (s.top() == c[ans]) {//验证 s.pop(); ans++; if (s.empty() == 1) { //防RE break; } } } if (s.empty()) {//判断输出就行 cout << "Yes\n"; } else { cout << "No\n"; } while (!s.empty()) { s.pop(); } } return 0; }
信息
- ID
- 8414
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 35
- 已通过
- 10
- 上传者