目录
- T1. 栈的基本操作
- T2. stack or queue
- 思路分析
- T3. 合影效果
- T4. 发型糟糕的一天
- 思路分析
T1. 栈的基本操作
题目链接:SOJ D1188
此题为 2022 年 6 月三级第二题仅有栈操作的版本,见 2022 年 6 月青少年软编等考 C 语言三级真题解析中的 T2。
T2. stack or queue
题目链接:SOJ D1211
栈和队列都是常用的线性结构,它们都提供两个操作:
Push
:加入一个元素。Pop
:弹出一个元素。
不同的是,栈是先进后出,而队列则是先进先出。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。
时间限制:1 s
内存限制:64 MB
- 输入
第一行输入一个整数 t t t,代表有 t t t 组测试数据。
对于每组测试数据,第一行输入一个整数 n n n,代表操作的次数。
随后输入 n n n 行,每行包含两个整数 t y p e v a l type\ val type val。当 t y p e = 1 type = 1 type=1 时,表示该次操作为 p u s h push push 操作, v a l val val 表示进入的数字。当 t y p e = 2 type=2 type=2 时,表示该次操作为 p o p pop pop 操作, v a l val val 代表出来的数字, 3 ≤ n ≤ 2000 3\le n\le 2000 3≤n≤2000。 - 输出
每组测试数据输出一行。输出该组数据对应的线性结构,Stack
或者Queue
。题目保证是栈或者队列的一种。 - 样例输入
2 6 1 1 1 2 1 3 2 3 2 2 2 1 4 1 1 1 2 2 1 2 2
- 样例输出
Stack Queue
思路分析
此题考查栈与队列的模拟,属于基础题。
需要分析清楚如何区分栈和队列,容易想到,对于弹出 x x x 的操作,
- 如果栈顶元素不是 x x x,那么一定是队列;
- 如果栈顶元素是 x x x,并且队首元素不是 x x x,那么一定是栈;
- 否则,根据当前信息尚不能区分,则分别执行出栈和出队操作即可。
/** Name: T2.cpp* Problem: stack or queue* Author: Teacher Gao.* Date&Time: 2025/04/06 16:48*/#include <bits/stdc++.h>using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(