当前位置: 首页 > news >正文

出栈序列的合法性

给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。

输入格式:
输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数)。最后 K 行,每行给出 N 个数字的出栈序列。所有同行数字以空格间隔。

输出格式:
对每一行出栈序列,如果其的确是有可能得到的合法序列,就在一行中输出YES,否则输出NO。

输入样例:

5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2

输出样例:

YES
NO
NO
YES
NO

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const int N=2e6+10;
stack <int> s;
int a[N];
signed main()
{ios;int m,n,t;cin>>m>>n>>t;while (t--){for (int i=0;i<n;i++) cin>>a[i];int cnt=0;for (int i=1;i<=n;i++){s.push(i);if (s.size()>m) break;while (s.top()==a[cnt]){s.pop(),cnt++;if (s.empty()) break;}}if (!s.size()) cout<<"YES\n";else cout<<"NO\n";while (s.size()) s.pop();}return 0;
}

http://www.lryc.cn/news/187767.html

相关文章:

  • unity操作_刚体 c#
  • 网络编程中套接字(socket)介绍(Python示例)
  • d3dcompiler_43.dll是什么文件?缺失d3dcompiler_43.dll文件修复与解决方法
  • YOLOv7改进:SPD-Conv,低分辨率图像和小物体涨点明显,涨点神器!!!
  • iris(golang)连接mysql数据库
  • C现代方法(第1、2章)笔记
  • 练[CISCN2019 华东南赛区]Double Secret
  • 『Linux - gcc / g++』c程序翻译过程
  • 苹果遭遇安全危机,应用商店曝出不良APP,或影响iPhone的销售
  • docker 基本操作
  • ARM:使用汇编完成三个灯流水亮灭
  • 嵌入式养成计划-33--数据库-sqlite3
  • 什么是大数据运维?大数据运维的职责
  • 解决方案:AI赋能工业生产3.0,从工业“制造”到“智造”
  • Android KeyStore 秘钥导入
  • TDengine+OpenVINO+AIxBoard,助力时序数据分类
  • 设计模式——16. 迭代器模式
  • flink redis connector需要防止包冲突
  • socket can查看详细信息 命令 ip -details -statistics link show can0
  • 打造虚拟企业展厅,开启商务活动新时代
  • 03黑马店评-添加商户缓存和商户类型的缓存到Redis
  • LabVIEW玩转魔方
  • 大数据学习(1)-Hadoop
  • 常用时序模型
  • 阿里云/腾讯云国际站:私服服务器:什么是游戏虚拟服务器及用途讲解?
  • ssti 前置学习
  • uni-app:服务器端数据绘制echarts图标(renderjs解决手机端无法显示问题)
  • Python集合魔法:解锁数据去重技巧
  • flutter开发实战-inappwebview实现flutter与Javascript的交互JSBridge
  • 私有云盘:lamp部署nextcloud+高可用集群