NYOJ 1128 手速(双端队列)
2017-11-25 20:35
246 查看
题目1128
时间限制: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;
否则输出当前序列,用空格隔开
样例输入
样例输出
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;
}
}
}
手速
时间限制: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;
否则输出当前序列,用空格隔开
样例输入
2 3 0 1 0 2 1 3 0
样例输出
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;
}
}
}
相关文章推荐
- nyist1128手速(双端队列deque的用法)
- nyoj1117 鸡蛋队列 (双端队列,deque)
- NYOJ备用2344 盖伦的告白(线段树||双端队列)
- 队列Queue、双端队列Deque
- STL双端队列 deque
- Python 数据结构与算法——deque(双端队列)
- Javascript实现能够双端操作的循环队列
- HDU 5289 Assignment(多校2015 RMQ 单调(双端)队列)
- BZOJ 2457 [BeiJing2011] 双端队列
- deque双端队列的基本操作
- UVA - 442 Matrix Chain Multiplication 双端队列
- nyoj 547 水池加水 priority_queue优先级队列初体验
- deque双端队列容器
- nyoj 128前缀式计算 【数据结构&&队列】
- Glib学习(3) 双端队列 Double-ended Queues
- hdu 5261 蜀道难(deque 双端队列)
- 关于SPFA的双端队列优化
- UVA 11988 STL deque (双端队列||链表模拟)
- ADT双端队列的实现
- Java 集合深入理解(10):Deque 双端队列