队栈

题目描述


Yazid 是一名 OI 初学者。他最近在研究基础数据结构:队列和栈。某天,Yazid 脑洞大开,发明了一种叫做“队栈”的数据结构。众所周知,队列是先进先出的数据结构,而栈是先进后出的数据结构。而 Yazid 发明的队栈则同时支持查询并删除其中 最早被插入的元素和最晚被插入的元素。Yazid 有一个初始为空的队栈和一个 黑盒(这是一个存放数字的盒子),接下来,他要依次执行 Q 个操作。操作分为 4 种:
1. push:将一个非负整数加入队栈。
2. pop_queue:找出队栈中最 早被插入的元素,将其取出放入黑盒,并从队栈中删除。
3. pop_stack:找出队栈中最 晚被插入的元素,将其取出放入黑盒,并从队栈中删除。
4. print:将黑盒中的所有数取出,并按被放入的先后顺序从左到右排列得到一个整数。
例如:
黑盒中依次被放入了 0, 23, 330, 6,
那么获得并打印的整数即是 233306。
由于 Yazid 懒得在每次 push 操作时想插入的数,因此他提前写好了一个长度为 n 的插入序列 A(下标从 1 开始)。在接下来的所有 push 操作中,Yazid 会依次地、循环地将这些数加入队栈。具体来说:
        • 在首次 push 操作时,Yazid 会将 A 1 加入队栈。
        • 在之后的每次 push 操作中,假设 Yazid 上次 push 时加入的数是 A i ,则本次他会将 A i+1 加入队栈。特别地,如果 i = n,则 Yazid 本次会将 A 1 加入队栈。
请你依次输出 Yazid 通过 print 操作获得的整数。


输入格式


从文件 staqueue.in 中读入数据。
第 1 行一个整数 n,表示插入序列的长度。
第 2 行 n 个用单个空格隔开的非负整数 A 1 , A 2 , . . . , A n ,描述插入序列。
第 3 行一个整数 Q,表示操作数目。
第 4 行 Q 个紧挨着的 1 ∼ 4 之间的数字,依次描述每个操作,每个数字表示操作
的编号(各操作对应的编号见题目描述)

• 保证所有操作的合法性。即保证:
– 执行任意 pop_queue 和 pop_stack 操作时队栈不为空。
– 执行任意 print 操作时黑盒不为空。


输出格式


对于所有 print 操作,输出一行一个整数,表示该 print 操作中 Yazid 获得的数。

样例输入#1

2

1 2

7

1112324

样例输出#1

112

样例输入#2

4

0 23 330 6

12

121313124134

样例输出#2

23306

0

参考代码

#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#define ll long long
using namespace std;vector <int> v;
queue <int> c;
vector <int> ans;int main()
{int n;cin>>n;for(int i=0;i<n;i++){int x;cin>>x;c.push(x);}int Q;cin>>Q;string s;cin>>s;for(int i = 0; i < Q; i++){int x = s[i] - '0';if(x == 1){v.push_back(c.front());int t = c.front();c.pop();c.push(t);}else if(x == 2){ans.push_back(*(v.begin()));v.erase(v.begin());}else if(x == 3){ans.push_back(*(v.end() - 1));v.erase(v.end() - 1);}else{bool flag = false;for(vector<int>::iterator iter = ans.begin(); iter != ans.end(); iter++){if(*iter != 0){flag = true;break;}}if(flag){bool f = false;for(vector<int>::iterator iter = ans.begin(); iter != ans.end(); iter++){if(*iter != 0)f = true;if(f)cout<<*iter;}}elsecout<<0;cout<<endl;ans.clear();}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/108622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman简单使用

文章目录 一.接口测试流程二、Postman接口测试工具三、接口关联四、全局变量和环境变量 一.接口测试流程 拿到API接口文档&#xff08;从开发拿或者抓包获取&#xff09;&#xff0c;熟悉接口业务&#xff0c;接口地址&#xff0c;错误码等等 编写接口的测试用例以及评审 编写…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

【数据结构】排序--快速排序

目录 一 概念 二 快速排序的实现 1. hoare版本 (1)代码实现 (2)单趟排序图解 (3) 递归实现图解 (4)细节控制 (5)时间复杂度 (6)三数取中优化 2 挖坑法 (1)代码实现 (2)单趟图解 3 前后指针法 (1) 代码实现 (2) 单趟图解 ​编辑4 优化子区间 5 非递归快速排…

FPGA project : flash_write

本实验重点学习了&#xff1a; flash的页编程指令pp。 在写之前要先进行擦除&#xff08;全擦除和页擦除&#xff09;&#xff1b; 本实验&#xff1a;先传写指令&#xff0c;然后进入写锁存周期&#xff0c;然后传页编程指令&#xff0c;3个地址&#xff1b; 然后传数据&a…

【Java基础面试十五】、 说一说你对多态的理解

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说你对多态的理解 …

常见6种易被忽略的软件隐藏缺陷

软件隐藏缺陷常常会被测试人员忽略或遗漏&#xff0c;其往往会对项目的成功和用户体验产生不可忽视的负面影响&#xff0c;易造成软件数据泄露、系统崩溃或安全问题等&#xff0c;直接影响系统稳定性和用户满意度。 因此我们需要高度重视软件的隐藏缺陷&#xff0c;重视全面的软…

开源项目汇总

element-plus 人人开源 人人开源 多租户 若依 jeecg https://gitee.com/jeecg/jeecg?_fromgitee_search#https://gitee.com/link?targethttp%3A%2F%2Fidoc.jeecg.com jeeplus JeePlus快速开发平台 j2eefast Sa-Plus

“Flex弹性布局、轮播图mock遍历数据和首页布局解析与实践“

目录 引言1. Flex弹性布局介绍及使用什么是Flex弹性布局&#xff1f;Flex容器与Flex项目Flex属性详解 2. 轮播图mock遍历数据简述轮播图的作用和意义处理mock数据的重要性使用Mock模拟数据遍历 3. 首页布局总结 引言 在现代网页开发中&#xff0c;灵活性和响应式布局是至关重要…

Hadoop知识点+面试题大全

20道面试题及详细解答&#xff01; 1.说说什么是结构化数据、非结构化数据和半结构化数据 结构化数据、非结构化数据和半结构化数据是根据数据的组织结构和格式来划分的不同类型的数据。 结构化数据&#xff1a;结构化数据是按照预定义的数据模型进行组织和存储的数据。它通常…

linux 查看系统版本

命令&#xff1a;lsb_release -a 可能遇到的问题&#xff1a; 问题1&#xff1a; 报错&#xff1a;command not found: lsb_release原因&#xff1a;系统没有安装 lsb_release解决方案&#xff1a;sudo apt-get install lsb-release 问题2&#xff1a; 报错&#xff1a; Tra…

【C++】--遇到抛异常没有及时释放的空间该怎么办??---智能指针来帮你解决(以及定制删除器)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

KNN-近邻算法 及 模型的选择与调优(facebook签到地点预测)

什么是K-近邻算法&#xff08;K Nearest Neighbors&#xff09; 1、K-近邻算法(KNN) 1.1 定义 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。 来源&#xff1a;KNN算法最早是由Cover和Hart提…

航天科技×辰安科技 打造智慧化工园区安全保障平台

近年来&#xff0c;国内化工园区安全事故频发&#xff0c;多起化工园区重特大事故造成了严重人员财产损失的同时&#xff0c;也重创了行业的整体发展。在智能制造和工业互联网的背景下&#xff0c;建设智慧化工园区&#xff0c;使用智能化手段实现安全生产是解决当前化工园区安…

uniapp中tabbar导航的点击事件

onTabItemTap : function(e) {console.log(e);// e的返回格式为json对象&#xff1a; {"index":0,"text":"首页","pagePath":"pages/index/index"} },index&#xff1a;点击的序号&#xff0c;从0开始 pagePath&#xff1a…

Vue页面使用Vue3语法

Vue页面使用Vue3语法 HelloWorld.vue <template><h1>{{ msg }}</h1><h1>醒醒&#xff0c;不能犯困&#xff01;</h1><div><h1>次数&#xff1a;{{count}}</h1><button click"dj">点击我&#xff0c;看看什么…

Pruning Pre-trained Language Models Without Fine-Tuning

本文是LLM系列文章&#xff0c;针对《Pruning Pre-trained Language Models Without Fine-Tuning》的翻译。 修剪未微调的预训练语言模型 摘要1 引言2 相关工作3 背景4 静态模型剪枝5 实验6 分析7 结论8 局限性 摘要 为了克服预训练语言模型(PLMs)中的过度参数化问题&#xf…

冲刺十五届蓝桥杯P0005单词分析

文章目录 题目分析代码 题目 单词分析 分析 统计字符串中字母出现的次数&#xff0c;可以采用哈希表&#xff0c;代码采用的是数组来存储字符&#xff0c;将字符-97&#xff0c;得到对应的数组下标&#xff0c;将对应下标的数组&#xff1b;找到数组元素最大的下标&#xff…

Linux C语言

一、基础知识 &#xff08;一&#xff09;冯诺依曼体系 1、存储器&#xff1a;内存 存储程序的思想&#xff1a;按照存储器中指令的顺序 2、存储器的分类 1&#xff09;主存&#xff1a;内存&#xff08;C盘&#xff09; 2&#xff09;外存 3&#xff09;寄存器是cpu内部…

windows常用命令

一.文件操作 dir&#xff1a;查看文件当前路径目录列表 cd .. &#xff1a;返回上一级目录 cd 路径&#xff1a;进入路径

【弃坑xdm】docker容器作为开发环境,更加灵活可靠

关于我准备转行深度学习~~ 弃坑xdm 弃坑xdm 弃坑xdm 转发给你的同学&#xff0c;吓他们一跳~~ ps:其实我准备使用docker容器作为开发环境&#xff0c;vscode可以直接连接docker容器&#xff0c;更加灵活可靠。