重庆推广网站排名,做嗳嗳的网站,小学生小发明小制作大全,网站开发区【模板】栈
题目描述
请你实现一个栈#xff08;stack#xff09;#xff0c;支持如下操作#xff1a;
push(x)#xff1a;向栈中加入一个数 x x x。pop()#xff1a;将栈顶弹出。如果此时栈为空则不进行弹出操作#xff0c;输出 Empty。query()#xff1a;输出栈顶…【模板】栈
题目描述
请你实现一个栈stack支持如下操作
push(x)向栈中加入一个数 x x x。pop()将栈顶弹出。如果此时栈为空则不进行弹出操作输出 Empty。query()输出栈顶元素如果此时栈为空则输出 Anguei!。size()输出此时栈内元素个数。
输入格式
本题单测试点内有多组数据。 输入第一行是一个整数 T T T表示数据组数。对于每组数据格式如下 每组数据第一行是一个整数表示操作的次数 n n n。 接下来 n n n 行每行首先由一个字符串为 pushpopquery 和 size 之一。若为 push则其后有一个整数 x x x表示要被加入的数 x x x 和字符串之间用空格隔开若不是 push则本行没有其它内容。
输出格式
对于每组数据按照「题目描述」中的要求依次输出。每次输出占一行。
样例 #1
样例输入 #1
2
5
push 2
query
size
pop
query
3
pop
query
size样例输出 #1
2
1
Anguei!
Empty
Anguei!
0提示
样例 1 解释
对于第二组数据始终为空所以 pop 和 query 均需要输出对应字符串。栈的 size 为 0。
数据规模与约定
对于全部的测试点保证 1 ≤ T , n ≤ 1 0 6 1 \leq T, n\leq 10^6 1≤T,n≤106且单个测试点内的 n n n 之和不超过 1 0 6 10^6 106即 ∑ n ≤ 1 0 6 \sum n \leq 10^6 ∑n≤106。保证 0 ≤ x 2 64 0 \leq x \lt 2^{64} 0≤x264。
提示
请注意大量数据读入对程序效率造成的影响。因为一开始数据造错了请注意输出的 Empty 不含叹号Anguei! 含有叹号。 思路
首先定义一个无符号长整形的栈stk。读取测试用例的数量t。针对每一个测试用例先清空栈然后读取操作的数量n。
接下来进行n次操作每次操作首先读取操作指令op。如果指令是push则读取一个无符号长整型的数x并将其压入栈中如果指令是pop则弹出栈顶元素如果栈为空则输出Empty如果指令是query则输出栈顶元素如果栈为空则输出Anguei!“如果指令是size”则输出栈的大小。
注意x 的值可能会很大所以要用 unsigned long long否则无法通过部分测试点。 AC代码
#include iostream
#include stack
#define ull unsigned long long
#define AUTHOR HEX9CF
using namespace std;const int N 1e7 7;stackull stk;int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin t;while (t--) {while (stk.size()) {stk.pop();}int n;cin n;while (n--) {string op;cin op;if (op push) {ull x;cin x;stk.push(x);} else if (op pop) {if (stk.size()) {stk.pop();} else {cout Empty endl;}} else if (op query) {if (stk.size()) {cout stk.top() endl;} else {cout Anguei! endl;}} else if (op size) {cout stk.size() endl;}}}
}