题目链接

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]);
}
}
}
}

最新文章

  1. 三种对话框的示例(alert,confirm,prompt)
  2. Beeline known issues
  3. git cheat sheet,git四张手册图
  4. Linux学习笔记2:如何快速的学习使用一个命令
  5. RH033读书笔记(2)-Lab 3 Getting Help with Commands
  6. CodeForces 621C Wet Shark and Flowers
  7. Docker端口映射
  8. kindeditor扩展粘贴截图功能&amp;修改图片上传路径并通过webapi上传图片到图片服务器
  9. 腾讯云CDN python SDK
  10. 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题
  11. 黄聪:xampp运行MySQL shutdown unexpectedly解决方案
  12. 坑之mysql 字符串与数字操作
  13. Django Form ModelForm modelfromset
  14. NOIP 车站分级 (luogu 1983 &amp; codevs 3294 &amp; vijos 1851) - 拓扑排序 - bitset
  15. Bagging和Boosting的区别(面试准备)
  16. Robot Movement(机器人移动)
  17. H5实现的手机摇一摇
  18. [问题解决]Fresco设置圆角效果不生效问题探究
  19. mininet+floodlight使用(一)
  20. 重置 ckeditor清空内容

热门文章

  1. Fresco对Listview等快速滑动时停止加载
  2. PS中把图片白色背景变成透明的方法
  3. MATLAB矩阵基础运算
  4. 新学到的linux命令
  5. Jenkins安装war版本
  6. 2016.7.14 如何在浏览器中查看jsp文件
  7. UE把环境变量Path改了
  8. Win7如何自定义鼠标右键菜单 添加新建WORD文档
  9. 微信小程序 - 答题进度条
  10. JVM的GC简介和实例