博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客~~wannafly挑战赛19~A 队列
阅读量:4319 次
发布时间:2019-06-06

本文共 1364 字,大约阅读时间需要 4 分钟。

链接:

来源:牛客网

题目描述

ZZT 创造了一个队列 Q。这个队列包含了 N 个元素,队列中的第 i 个元素用 Q
i 表示。Q
1 表示队头元素,Q
N 表示队尾元素。队列中的元素是 N 的一个全排列。
ZZT 需要在这个队列上执行 P 次操作,操作分两种:
FIRST X: 将元素 X 移到队头。
LAST X: 将元素 X 移到队尾。
在 P 次操作之后,ZZT 想知道队列中的元素的排列方式,由于他最近很忙,因此需要请你帮他解决这个问题。

输入描述:

第一行输入一个正整数 N,表示队列的大小。 第二行输入 N 个正整数,Q
1
, Q
2
, Q
3
, ... ..., Q
N
,Q
i
表示队列中的第 i 个元素。保证这 N 个数是 N 的一个全排列。 第三行输入一个正整数 P,表示接下来要进行的操作次数。
接下来 P 行,第 i 行输入一个字符串 S
i 以及一个正整数 X
i,表示一次操作。
1 ≤ N ≤ 10
5.
1 ≤ Q
i ≤ N.
1 ≤ P ≤ 10
5.
S
 { “FIRST”, “LAST” }.
1 ≤ X
i ≤ 10
5.

输出描述:

输出 N 个正整数,表示 P 次操作之后的队列。
示例1

输入

44 2 1 33FIRST 4LAST 2LAST 1

输出

4 3 2 1 题意:中文题很明了了,要求对一长度为n的=队列进行m次操作,将指定元素插在队头或者队尾 题解:我们用两个数组进行保存和一个set容器进行操作 先将数据和操作分别读入 因为我们可以知道,操作从前往后会将数据不断的往队列里面压缩,所以我们将操作存起来倒着操作 这样就可以保证元素的顺序 用set容器来维护,确保临时数组b中没有重复元素出现 代码如下
#include
using namespace std;#define LL long longconst int maxn=1e5+5;int a[maxn], b[maxn];set
s;char ins[maxn][10];int v[maxn];int main(){ int n; scanf("%d", &n); for(int i=0;i
=0;i--){ int val=v[i]; if(s.count(val)){ continue; } s.insert(val); if(ins[i][0]=='F'){ b[head++]=val; }else{ b[tail--]=val; } } //我们将a中没有插入到b中的数组插入到b中 for(int i=0;i
View Code

 

 

转载于:https://www.cnblogs.com/buerdepepeqi/p/9277164.html

你可能感兴趣的文章
八. k8s--configmap学习笔记
查看>>
十. k8s--访问控制 serviceaccount和RBAC 学习笔记
查看>>
九. k8s--statefulset控制器
查看>>
十一. k8s--dashboard部署
查看>>
shell解析xml文件
查看>>
十二. k8s--网络策略flannel与canal学习笔记
查看>>
十三. k8s--调度器
查看>>
十四. k8s资源需求和限制, 以及pod驱逐策略
查看>>
三. k8s基本操作以及pod存活以及可用性验证钩子
查看>>
五. k8s--service学习笔记
查看>>
二. k8s安装过程
查看>>
jenkins pipeline 使用遇到的问题
查看>>
四. k8s--pod控制器
查看>>
一. python数据结构与算法
查看>>
django模型内部类meta解释
查看>>
v-for(:key)绑定index、id、key的区别
查看>>
el-tree文本内容过多显示不完全问题(解决)
查看>>
el-table翻页序号不从1开始(已解决)
查看>>
vue-cil 打包爬坑(解决)
查看>>
定位问题 vue+element-ui+easyui(兼容性)
查看>>