#HCOIJ202302T1. 出栈序列
出栈序列
题目描述
栈是一种“先进后出”的数据结构,对于一个序列1 2 ... n,其入栈顺序是1 2 ...n,但每个元素出栈的时机可以自由选择。
例如1入栈、1出栈,2入栈、3入栈、3出栈、2出栈,于是出栈序列为 1 3 2。
对于入栈顺序1 2 ... n,出栈序列有很多个,但出栈序列的总数不是1 2 ... n的全排列数,因为有些排列不满足出入栈规则。
例如3 1 2就不是一个合法的出栈序列,因为3先出栈意味着此时1和2在栈里面,入栈顺序是1 2,于是出栈必须是2 1。
小明仔细研究了出入栈的规则,它发现凡是不合法的出栈序列都有一个规律,至少有一个数,后面比它小的数,存在递增的情况。
现在请你帮助小明编写程序,对于给定的出栈序列,判断是否合法。
输入输出格式
输入格式:
- 第一行t,表示t组数据
- 对每组数据
- 第一行n,表示序列长度
- 第二行1..n的一个排列,表示要判断的出栈序列
输出格式:
- t行,每行Yes或No,表示出栈序列是否合法
输入输出样例
输入样例1:
2
3
1 2 3
3
3 1 2
输出样例1:
Yes
No
测试点
一共10个测试点,每个测试点10分
每个测试点时间限制为1s,空间限制为128Mb
数据范围:
- 所有数据:
- 样例1-3:
- 样例4-5:
- 样例6-10: