本文主要是介绍大二第二次月赛--手速,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
手速
- 描述
-
被学长虐了之后,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
- Line1:T组数据(T<=10)
此题用到数据结构:双端队列---deque<int >v;
常用结构 push_front();从头压入
push_back();从尾压入
pop_front();从头删除
pop_back();从尾删除
详细用法:http://qianmacao.blog.163.com/blog/static/20339718020123605656363/
参考代码:
/****************
Times:0ms;
NYOJ 1128
***************/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<string>
using namespace std;
#define Max(a,b) a>b?a:b
#define Min(a,b) a>b?b:a
#define mem(a,b) memset(a,b,sizeof(a))
int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};
int main()
{deque<int >v;int n,m,i,j,a,b,c,d;cin>>n;while(n--){while(!v.empty())v.pop_front();int flag=0;cin>>m;for(i=0; i<m; i++){cin>>a;if(a==4){flag=flag^1;continue;}if(flag==0){if(a==0||a==1){cin>>b;if(a==0)v.push_front(b);else v.push_back(b);}else{if(!v.empty()){if(a==2)v.pop_front();else v.pop_back();}}}else{if(a==0||a==1){cin>>b;if(a==1)v.push_front(b);else v.push_back(b);}else{if(!v.empty()){if(a==3)v.pop_front();elsev.pop_back();}}}}if(!v.empty()){while(!v.empty()){printf("%d ",v.front());v.pop_front();}}elseprintf("-1");puts("");}return 0;
}
这篇关于大二第二次月赛--手速的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!