ZOJ - 4016 Mergeable Stack 【LIST】
2024-08-29 08:56:19
题目链接
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4016
题意
模拟栈的三种操作
第一种 push 将指定元素压入指定栈
第二种 pop pop出指定栈的栈顶元素 如果栈空 输出 EMPTY
第三种 Move a b 将 b 中的所有元素 移动到 栈a中
思路
本来想到用 双端队列 因为 在移动的时候 比较方便 但是MLE了
后来想到用链表 但是在 比赛的时候 没有想到 有 STL 中 有LIST 这个容器 手写链表 然后 WA了
后来回来后 查了查 LIST 容器 用了一个 SPLICE 就可以模拟第三种操作了
AC代码
#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <list>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits>
#define CLR(a, b) memset(a, (b), sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair<string, int> psi;
typedef pair<string, string> pss;
const double PI = acos(-1.0);
const double E = exp(1.0);
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;
const int maxn = 3e5 + 5;
const int MOD = 1e9 + 7;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, q;
scanf("%d%d", &n, &q);
list <int> l[maxn];
for (int i = 0; i < q; i++)
{
int op;
int a, b;
scanf("%d", &op);
if (op == 1)
{
scanf("%d%d", &a, &b);
l[a].push_front(b);
}
else if (op == 2)
{
scanf("%d", &a);
if (l[a].size() == 0)
printf("EMPTY\n");
else
{
printf("%d\n", l[a].front());
l[a].pop_front();
}
}
else if (op == 3)
{
scanf("%d%d", &a, &b);
l[a].splice(l[a].begin(), l[b]);
}
}
}
}
最新文章
- 三种对话框的示例(alert,confirm,prompt)
- Beeline known issues
- git cheat sheet,git四张手册图
- Linux学习笔记2:如何快速的学习使用一个命令
- RH033读书笔记(2)-Lab 3 Getting Help with Commands
- CodeForces 621C Wet Shark and Flowers
- Docker端口映射
- kindeditor扩展粘贴截图功能&;修改图片上传路径并通过webapi上传图片到图片服务器
- 腾讯云CDN python SDK
- 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题
- 黄聪:xampp运行MySQL shutdown unexpectedly解决方案
- 坑之mysql 字符串与数字操作
- Django Form ModelForm modelfromset
- NOIP 车站分级 (luogu 1983 &; codevs 3294 &; vijos 1851) - 拓扑排序 - bitset
- Bagging和Boosting的区别(面试准备)
- Robot Movement(机器人移动)
- H5实现的手机摇一摇
- [问题解决]Fresco设置圆角效果不生效问题探究
- mininet+floodlight使用(一)
- 重置 ckeditor清空内容