(STL,map,queue)团体队列

目录

    • 目录
      • 题目:
      • 分析与解答
            • 1.队列先进先出,正好符合排队问题,所以用队列模拟
            • 2.每一个团队有一个队列,团队整体又形成一个队列
            • 3.每一个团队的成员和团队编号需要对应,因此利用map存编号为x的人所在的团队编号
            • 4.插入队:
            • 5.出队
            • 6.queue常用:
            • 7.代码

题目:

有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)。
ENQUEUEx:编号为x的人进入长队。
DEQUEUE:长队的队首出队。
STOP:停止模拟。
对于每个DEQUEUE指令,输出出队的人的编号。
Sample Input
2
3 101 102 103
3 201 202 203
ENQUEUE 101
ENQUEUE 201
ENQUEUE 102
ENQUEUE 202
ENQUEUE 103
ENQUEUE 203
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
2
5 259001 259002 259003 259004 259005
6 260001 260002 260003 260004 260005 260006
ENQUEUE 259001
ENQUEUE 260001
ENQUEUE 259002
ENQUEUE 259003
ENQUEUE 259004
ENQUEUE 259005
DEQUEUE
DEQUEUE
ENQUEUE 260002
ENQUEUE 260003
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
0
Sample Output
Scenario #1
101
102
103
201
202
203
Scenario #2
259001
259002
259003
259004
259005
260001

分析与解答

1.队列先进先出,正好符合排队问题,所以用队列模拟
2.每一个团队有一个队列,团队整体又形成一个队列

q为团队队列,q2[i]为团队i的成员队列

3.每一个团队的成员和团队编号需要对应,因此利用map存编号为x的人所在的团队编号

知道团队成员就知道了团队编号
比如:
map< int ,int>team;
team[x]=i;
此时输入成员编号x就找到了团队编号i
int t=team[x]

4.插入队:

输入的是成员编号x,根据int t=team[x],可以找到对应团队编号t

先判断团队有没有成员在队列中 if(q2[t].empty())
如果没有则将团队t进入队列
然后插入团队t的成员

5.出队

先找到第一个团队 int t=q.front()
输出第一个团队的第一个队员,然后将第一个队员清除q2[t].pop()
如果此时这个团队没有人了,就全体清出队列q.pop

6.queue常用:

queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()

7.代码
#include<cstdio>
#include<queue>
#include<map>
using namespace std;const int maxt = 1000+10;
int main(){int t,kase=0;while(scanf("%d",&t)==1&&t){printf("Scenario #%d\n",++kase);map<int,int> team;//team[x]表示编号为x的人所在的团队编号 for(int i=0;i<t;i++){int n,x;scanf("%d",&n);while(n--){scanf("%d",&x);team[x]=i;}}queue<int> q,q2[maxt];//q时团队的队列,而q2[i]是团队i成员的队列 for(;;){int x;char cmd[10];scanf("%s",cmd);if(cmd[0]=='S') break;else if(cmd[0]=='D'){int t=q.front();//团队队首 printf("%d\n",q2[t].front());q2[t].pop();//队首团队的队首if(q2[t].empty()) q.pop(); }else if(cmd[0]=='E'){scanf("%d",&x);int t =team[x];if(q2[t].empty()) q.push(t);q2[t].push(x);}} printf("\n");}
} 

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

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

相关文章

bat执行exe程序_dos命令start教程,并行运行exe程序或者启动bat批处理cmd脚本

大家好&#xff0c;我是老盖&#xff0c;首先感谢观看本文&#xff0c;本篇文章做的有视频&#xff0c;视频讲述的比较详细&#xff0c;也可以看我发布的视频。今天我们学习DOS命令start这个命令&#xff0c;它可以启动一个EXE程序&#xff0c;也可以启动一个BAT批处理脚本&…

(STL,set,priority_queue)丑数

题目&#xff1a; 丑数是指不能被2,3,5以外的其他素数整除的数。把丑数从小到大排列起来&#xff0c;结果如下&#xff1a;1,2,3,4,5,6,8,9,10,12,…求第1500个丑数 分析与解答&#xff1a; 0.对于任意丑数x&#xff1a;2x&#xff0c;3x&#xff0c;5x也是丑数 1.用优先队…

数据库备份mysql_MySQL数据库备份与恢复方法

常有新手问我该怎么备份数据库&#xff0c;下面介绍3种备份数据库的方法&#xff1a;(1)备份数据库文件MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件。在Linux下数据库文件的存放目录一般为/var/lib/mysql。在Windows下这个目录视MySQL的安装路径而定&a…

(大整数类Biginteger)大斐波数

题目 Fibonacci数列&#xff0c;定义如下&#xff1a; f(1)f(2)1 f(n)f(n-1)f(n-2) n>3。 计算第n项Fibonacci数值。 输入 输入第一行为一个整数N&#xff0c;接下来N行为整数Pi&#xff08;1<Pi<1000&#xff09;。 输出 输出为N行&#xff0c;每行为对应的…

mysql创建表的流程_MySQL Create Table怎样创建表?详解创建过程步骤

1、新建一个名为"createsql"的数据库。2、点击该数据库左侧的三角形图标&#xff0c;并显示其下面有四个列表项&#xff1a;表(Tables)和视图(Views)、存储过程(Stored Procedures)、函数(Functions)。3、右击【表(Tables)】列表项&#xff0c;并在弹出的快捷菜单中选…

(stack栈)rails

题目&#xff1a; 某城市有一个火车站&#xff0c;铁轨铺设如图所示&#xff0c;有n节车厢从A方向驶入车站&#xff0c;按进站顺序编号为1至n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢&#xff0c;你可以借助中转站C。这是一个…

docker 查看镜像_Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指!...

来自小洋人最HAPPY投稿一、Docker简介Docker是开源应用容器引擎&#xff0c;轻量级容器技术。基于Go语言&#xff0c;并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux系统上&#xff0c…

(stack 解析表达式)矩阵链乘

问题: 输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数.如果无法进行,输出error.如果A是m*n矩阵,B是n*p的矩阵,乘法次数为m*n*p 如果A的列数不等于B的行数,则乘法无法进行. A 50*10 B 10*20 C 20*5 &#xff08;A(BC))乘法次数&#xff1a;10*20*5(BC乘法次数)50*1…

mysql和维信公众号_mysql实用指南

mysqld --verbose --help&#xff1a;可以显示 mysql 的编译配置选项&#xff0c;即功能配置描述。mysql 显示所有支持的字符集&#xff1a; SHOW CHARACTER SET;mysql 创建数据库或表的时候设置是否大小写敏感&#xff1a;CREATE DATABASE test_database CHARACTER SET u…

(链表,插入元素)破损的键盘

题目&#xff1a; 你有一个破损的键盘。键盘上的所有键都可以正常工作&#xff0c;但有时Home键或者End键会自 动按下。你并不知道键盘存在这一问题&#xff0c;而是专心地打稿子&#xff0c;甚至连显示器都没打开。当你 打开显示器之后&#xff0c;展现在你面前的是一段悲剧的…

mac 强制删除mysql_mac中如何彻底删除MySQL

使用sudo rm /etc/my.cnfsudo rm /usr/local/mysqlsudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOMsudo rm -rf /Library/PreferencePanes/MySQL*vim /etc/hostconfig and removed the line MYSQLCOM-YES-rm -rf ~/Library/PreferencePanes/MySQL*su…

(完全二叉树编号)小球下落

题目 有一棵二叉树&#xff0c;最大深度为D&#xff0c;且所有的叶子深度都相同。所有结点从上到下从左到右编号为1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;2eD-1。在结点1处放一个小球&#xff0c;它会往下落。每个结点上都有一个开关&#xff0c;初始全部关闭…

python range 步长为负数_【Python面试】 说说Python中xrange和range的区别?

公众号新增加了一个栏目&#xff0c;就是每天给大家解答一道Python常见的面试题&#xff0c;反正每天不贪多&#xff0c;一天一题&#xff0c;正好合适&#xff0c;只希望这个面试栏目&#xff0c;给那些正在准备面试的同学&#xff0c;提供一点点帮助&#xff01;小猿会从最基…

(二叉树的动态创建与bfs)树的层次遍历

题目&#xff1a; 例&#xff1a;输入一棵二叉树&#xff0c;你的任务是按从上到下&#xff0c;从左到右的顺序输出每一个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左&#xff0c;R表示右)。在输入中&#xff0c;每个节点的左括号和右括号之间没有空格&#…

windows搭建tftp服务器_Ubuntu中搭建TFTP服务器

参考&#xff1a; 在Ubuntu中搭建TFTP服务器_小拇指的脑瓜子的博客-CSDN博客_ubuntu tftp​blog.csdn.net主要步骤&#xff1a;sudo apt-get install -y xinetd tftp tftpd2. 创建文件/etc/xinetd.d/tftp&#xff0c;内容如下&#xff1a;service tftp {socket_type dgrampro…

(二叉树的遍历)Tree UVa 548

题目&#xff1a; 给一棵点带权&#xff08;权值各不相同&#xff0c;都是小于10000的正整数&#xff09;的二叉树的中序和后序遍 历&#xff0c;找一个叶子使得它到根的路径上的权和最小。如果有多解&#xff0c;该叶子本身的权应尽量小。 输入中每两行表示一棵树&#xff…

mysql undrop_MySQL 如何对InnoDB使用Undrop来恢复InnoDB数据

适用于&#xff1a;MySQL服务器版本4.1到5.6 [发行版4.1到5.6]本文信息适用于所有平台。目标如何使用undrop for innodb从损坏的表中提取数据解决方案使用工具有时可能从无法用innodb_force_recovery读取的表中恢复数据。undrop可以直接读取数据库的ibdata1文件&#xff0c;来获…

(二叉树DFS)天平UVa 839

题目 输入一个树状天平&#xff0c;根据力矩相等原则判断是否平衡。如图6-5所示&#xff0c;所谓力矩相等&#xff0c;就是WlDlWrDr&#xff0c;其中Wl和Wr分别为左右两边砝码的重量&#xff0c;D为距离。采用递归&#xff08;先序&#xff09;方式输入&#xff1a;每个天平的…

r语言怎么保存代码_R代码忘记保存,系统崩溃了怎么办?

R问题 跑程序时电脑突然崩溃,程序被强制中断导致代码不见了怎么办? 这些糟心的情况想必每个打工人都不想经历,偏偏我就是那个倒霉蛋,今早打开电脑发现昨晚写的代码忘记保存,心态崩到想当场飙眼泪,冷静下来之后开始寻找解决方案: 解决方案 按照下述路径找到history_datab…

(二叉树DFS)下落的树叶

题目&#xff1a; 给一棵二叉树,每个结点都有一个水平位置:左子结点在它左边1个单位,右子结点在右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。如图所示,从左到右的3个位置的权和分别为7,11,3。按照递归(先序)方式输入,用-1表示空树。 Sample Input 5 7 -1 6…