#include <stack> #include <string> #include <iostream> int main() { std::cin.tie(0); std::ios::sync_with_stdio(false); int T, n; for (std::cin >> T; T; --T) { std::stack<unsigned long long int> s; for (std::cin >> n; n; --n) { std::string t; std::cin >> t; if (t == "push") { unsigned long long x; std::cin >> x; s.push(x); } else if (t == "pop") { if (s.empty()) std::cout << "Empty\n"; else s.pop(); } else if (t == "query") { if (s.empty()) std::cout << "Anguei!\n"; else std::cout << s.top() << '\n'; } else { std::cout << s.size() << '\n'; } } } return 0; }
时间: 2024-04-28 11:22:50 浏览: 73
这是一段 C++ 代码,实现了一个栈的基本操作。其中,程序首先从标准输入读入测试用例的数量 T,然后对于每个测试用例,它会从标准输入读入操作的数量 n,然后依次执行每个操作。操作分为四种:push、pop、query 和 size。其中,push 表示将一个数压入栈中,pop 表示将栈顶的数弹出,query 表示输出栈顶的数,size 表示输出栈中元素的数量。
这段代码使用了 C++ 标准库中的 stack 类来实现栈的功能。同时,为了提高输入输出效率,使用了 std::cin.tie(0) 和 std::ios::sync_with_stdio(false) 来关闭 cin 和 cout 的同步,从而加快输入输出的速度。
相关问题
#include <iostream> #include <string> #include <stack> #include <vector> #include <iomanip> using namespace std; 逐行注释以上代码
这是一段C++的程序代码,使用了几个标准库的头文件。以下是逐行的注释:
```
#include <iostream> // 输入输出流库头文件
#include <string> // 字符串库头文件
#include <stack> // 栈库头文件
#include <vector> // 向量库头文件
#include <iomanip> // 格式控制库头文件
using namespace std; // 命名空间
```
这段程序代码导入了五个标准库的头文件,分别是iostream、string、stack、vector、iomanip,它们分别用于处理输入输出、字符串、栈、向量和格式控制。其中iostream是C++中最常用的输入输出流库,string是用于字符串操作的库,stack是用于栈数据结构的库,vector是用于动态数组的库,iomanip是用于格式化输出的库。
最后一行代码使用了命名空间std,这意味着所有的标准库函数和变量都在std命名空间中。如果不使用using namespace std,则需要在使用标准库函数时加上std::前缀。
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctime> #include<iostream> #include<algorithm> #include<map> #include<stack> #include<queue> #include<vector> #include<set> #include<string> #define dd double #define ll long long dd PI = acos(-1); using namespace std; const ll MAXN = 1e5 + 5; const ll INF = 1e9 + 5; ll n; struct node { ll x, y; }s[5000]; ll dp[MAXN] = { 0 }; int main() { //ios::sync_with_stdio(false); ll n, m; cin >> n >> m; for (ll i = 1; i <= n; i++) { cin >> s[i].x >> s[i].y; } for (ll i = 1; i <= n; i++) { for (ll j = m; j >= s[i].x; j--) { dp[j] = max(dp[j], dp[j - s[i].x] + s[i].y); } } cout << dp[m] << endl; }
这是一段动态规划求解背包问题的代码,用来求解一个容量为m的背包能够装下的最大价值。具体实现过程为:
1. 定义一个结构体node,用来存储物品的重量和价值。
2. 读入物品数量n和背包容量m,然后读入每个物品的重量和价值。
3. 使用二重循环,遍历每一个物品,然后从大到小枚举背包容量j,更新dp[j]的值,表示容量为j的背包能够装下的最大价值。
4. 最后输出dp[m]的值,即容量为m的背包能够装下的最大价值。
值得注意的是,这段代码中还定义了一些常量和宏定义,如MAXN、INF等,以及一些头文件和命名空间的使用。
阅读全文