#B3614. 【模板】栈
【模板】栈
B3614 【模板】栈
难度: 普及−
标签: 数据结构、栈、模拟、模板题
来源: 洛谷 B3614
题目背景
本题围绕“【模板】栈”所描述的场景展开。请维护一个栈,并依次处理以下四类命令: - push x:把无符号整数 压入栈顶; - pop:弹出栈顶元素。
下面的题面采用非逐字重述方式整理,但保留原题中的全部判定条件、边界含义、输入输出要求与特殊约定。
题目描述
请维护一个栈,并依次处理以下四类命令:
push x:把无符号整数 压入栈顶;pop:弹出栈顶元素。若当前栈为空,则不修改栈,并输出Empty;query:查询并输出栈顶元素。若当前栈为空,则输出Anguei!;size:输出当前栈中元素的个数。
栈遵循“后进先出”的规则。本题一个测试点中包含多组相互独立的数据,每组开始时栈均为空。
完整规则与任务要求
处理本题时,必须同时满足下列全部要求,不能只实现其中一部分:
- 请维护一个栈,并依次处理以下四类命令:。
push x:。- 把无符号整数 压入栈顶;。
- 若当前栈为空,则不修改栈,并输出
Empty;。 query:。- 查询并输出栈顶元素。
- 若当前栈为空,则输出
Anguei!;。 - 输出当前栈中元素的个数。
- 每组数据开始前栈为空,不同数据组之间不能保留元素。
pop与query在空栈时输出的字符串不同,必须严格区分。
程序应完整读取“输入格式”中规定的所有数据,并严格按照“输出格式”给出结果。题目中的区间端点、编号起点、排序优先级、同分处理、空结构处理、取模方式和特殊字符串,均以本题面明确写出的规则为准。
输入格式
第一行输入一个整数 ,表示数据组数。
对每组数据:
- 第一行输入一个整数 ,表示本组操作次数;
- 接下来 行,每行输入一条命令。命令名只可能是
push、pop、query、size。只有push后面还会跟一个整数 ,命令与 之间以空格分隔。
输出格式
按照命令要求输出结果,每次输出独占一行。没有要求输出的命令不产生任何内容。
输入输出样例
2
5
push 2
query
size
pop
query
3
pop
query
size
2
1
Anguei!
Empty
Anguei!
0
样例说明
第一组中,压入 后,栈顶是 ,栈大小是 ;弹出后再次查询,栈已为空,因此输出 Anguei!。
第二组从始至终没有成功压入元素,所以 pop、query 和 size 分别得到 Empty、Anguei! 和 0。
数据范围与注意事项
- ;
- 同一个测试点内,所有数据组的操作次数总和满足 ;
- ,因此 C++ 中应使用
unsigned long long保存元素; - 数据量较大,应使用较快的输入输出;
Empty不含感叹号,而Anguei!含感叹号。
本题面依据洛谷 B3614 的公开题目信息重新整理,为内容完整的非逐字重述版。
粤公网安备44195502000195号