题目: Team Queue
题意:有t个团队的人在排队,每次新来一个人时,如果他有队友在排队,那么他就会查到最后一个队友的身后,如果没人任何队友,则他会太刀长队队尾。
思路:不能按照题意一个长队进行分析,应该分开来,用俩个队列表示,团队号为一个队列,再分别每个团队为一个队列即数组队列。
(1) 首先输入时用map将每个人所在的团队号都标记上
(2)当有人来时,首先查看他说在的团队队列是否为空,如果空,则将此团队号进行入队团队队列,否则不入团队队列(因为已有本团队,即为插队!)。然后把此人入队 他所在的团队队列中。
(3)出队时,只需出团队号队列中的值,再分别将本团队的人出队,直到本团队为空时,将此团队号出团队号队列即可!
参考:入门经典--例5-6--P117
代码:
#include <iostream>
#include <map>
#include <queue>
using namespace std;
map<int,int>team;//存放人所在团队号:键是人的编号,值是团队号
int main()
{
int t,n,n