NYOJ 1128 手速(双端队列)
来源:互联网 发布:淘宝销量多久更新一次 编辑:程序博客网 时间:2024/06/07 06:53
手速
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
被学长虐了之后,wyl 认识到了手速的重要性,yy了一道。
初始化序列为空
给 n 个操作:
0 : 从头部往里放
1 : 从尾部往里放
2 : 从头部删除
3 : 从尾部删除
4: 改变功能,原来是从头部放的从尾部放,从尾部放的从头部放,删除也是如此
注:如果序列为空,请忽略2,3功能
- 输入
- Line1:T组数据(T<=10)
Line2:一个整数n(n<=200)
Line3:如果是0||1 操作,则后面跟一个m(int范围内),表示要放的数。 - 输出
- 如果当前序列为空,输出-1;
否则输出当前序列,用空格隔开 - 样例输入
230 10 21 30
- 样例输出
2 1 3-1
deque<int> d:双端队列。
push_front();往头部插元素
push_back();往尾部插元素
pop_front();删除头部元素
pop_back();删除尾部元素
#include<cstdio>#include<iostream>#include<deque>using namespace std;int main() { int t; cin >> t; while(t--) { int n, a, b, push_f = 0, push_b = 1, pop_f = 2, pop_b = 3; deque<int> d; cin >> n; for(int i = 0; i < n; i++) { cin >> a; if(a == 4) {//改变功能 swap(push_f, push_b); swap(pop_f, pop_b); } else if(a == push_f) { cin >> b; d.push_front(b); } else if(a == push_b) { cin >> b; d.push_back(b); } else if(a == pop_f && !d.empty()) d.pop_front(); else if(a == pop_b && !d.empty()) d.pop_back(); } if(d.empty()) cout << "-1" << endl; else { for(int i = 0; i < d.size(); i++) cout << d[i] << " "; cout << endl; } }}
阅读全文
0 0
- NYOJ 1128 手速(双端队列)
- nyist1128手速(双端队列deque的用法)
- nyoj 55(优先队列)
- nyoj 盖伦的告白(线段树||双端队列)
- NYOJ备用2344 盖伦的告白(线段树||双端队列)
- NYOJ 757 期末考试(优先队列)
- NYOJ 754 黑心医生(优先队列)
- nyoj 714 打牌的技巧(队列)
- NYOJ 714 Card Trick(队列queue)
- NYOJ-284坦克大战(优先队列)
- NYOJ 635优先队列
- nyoj 547 优先队列
- NYOJ I. 鸡蛋队列
- nyoj 757 (扣分最少)(队列问题)
- NYOJ 55 懒省事的小明(优先队列)
- nyoj 42 一笔画问题 (搜索+队列)
- nyoj 284坦克大战(优先队列+BFS)
- NYOJ 55 懒省事的小明(优先队列)
- 20
- 深入浅出:Linux设备驱动之字符设备驱动
- Tarjan’s off-line lowest common ancestors algorithm
- vb.net 教程 8-2 简单的SQL语言1
- Alice做算术 I
- NYOJ 1128 手速(双端队列)
- 字符串工具类(一)
- 第一篇博客
- luoguP1525关押罪犯
- TensorFlow模型op的保存和加载(含演示代码)
- Python:zip()函数
- 【算法学习】二叉树
- 01.创新与企业家精神——创新实践
- 《算法4》最小生成树之Prim与Kruskal算法