题意:

每一个数字有自己所属的团队,如果所属的团队已经有人在队列里,放在团队的最后一个,要不然放队列里最后一个

注意:一个团队里的最多1000个元素,但是入队,出队的操作会达到200000次

解法:循环队列,声明一个n长的数组,数组的每一个元素都是一个循环队列

没有判断队列是否满了,只简单的判断是否为空

AC时间:570ms

主要耗时在查找元素是那个团队时循环了所有元素,可以简单粗暴使用STL,用了就没意义了,o(︶︿︶)o 唉!!!

#include<iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; struct Node
{
int num;
int team;
Node()
{
num = -1;
team = -1;
}
};
struct Queue
{
int ql;
Node node[1003];
int position;
int limit;
Queue()
{
ql = 1003;
position = 0;
limit = 0;
}
void push(Node n)
{
node[position]=n;
position=(position+1)%ql;
}
Node offer()
{
Node n= node[limit];
limit=(limit+1)%ql;
return n;
}
bool empty()
{
return limit == position;
}
}; int findTeam(int number, Node* node, int nl)
{
for(int i = 0; i < nl; i++)
{
if(node[i].num == number)
{
return node[i].team;
}
}
return -1;
}
int findQueue(int team, Queue*head, int tl)
{
for(int i = 0; i < tl; i++)
{
if(head[i].node[0].team == team)
{
return i;
}
}
return tl;
}
int main()
{
//freopen("d:\\1.txt", "r", stdin);
int n;
string eq = "ENQUEUE";
string de = "DEQUEUE";
string stop = "STOP";
int t = 0;
while (cin >> n)
{
if(n == 0)
return 0;
t++;
cout << "Scenario #" << t << endl;
Node node[n * 1003];
Queue head[n];
int tn = 0;
for(int i = 0; i < n; i++)
{
Queue h;
head[i] = h;
int m;
cin >> m;
for(int j = 0; j < m; j++)
{
Node node2;
cin >> node2.num;
node2.team = i;
node[tn++] = node2;
}
}
string str;
int number;
int tl = 0;
while (true)
{
cin >> str;
if(str == stop)
break;
else if(str == de)
{
//de
cout << head[0].offer().num << endl;
if(head[0].empty())
{
int i = 1;
for(i = 0; i < tl-1; i++)
{
head[i] = head[i+1];
}
head[tl-1].limit = 0;
head[tl-1].position = 0;
tl--;
}
}
else
{
//en
cin >> number;
int team = findTeam(number, node, tn);
int i = findQueue(team,head, tl);
Node nn;
nn.num = number;
nn.team = team;
if(head[i].position == 0)
tl++;
head[i].push(nn);
}
}
cout << endl;
}
return 0;
}

  

UVA540-队列的更多相关文章

  1. Team Queue (uva540 队列模拟)

    Team Queue Queues and Priority Queues are data structures which are known to most computer scientist ...

  2. 团体队列UVA540 Team Queue(队列简单用法)

    题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...

  3. ACM学习历程——UVA540 Team Queue(队列,map:Hash)

    Description   Team Queue   Team Queue  Queues and Priority Queues are data structures which are know ...

  4. 算法习题---5.6团体队列(Uva540)

    一:题目 有t个队伍的人正在排队,每次新来一个人,如果他有队友在排队,那他可以插队,直接排到他的队伍的末尾.如果没有队伍在前面,那么他直接排在长队的末尾 ENQUEUE x 将编号x的队员入队 DEQ ...

  5. UVa540 Team Queue(队列queue)

    队列 STL队列定义在头文件<queue>中, 用“ queue<int>s ” 方式定义, 用push()和pop()进行元素的入队和出队操作, front()取队首元素(但 ...

  6. 5_6 团体队列(UVa540)<queue与STL其他容器的综合运用>

    先给出T个团体,并给出每个团体有多少人和每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整 ...

  7. 团体队列(UVa540)

    题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...

  8. 团体队列 UVA540 Team Queue

    题目描述 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后.如果没有任何一个队友排队,则他会被排到长队的队尾. 输入每个团队中所有队员的编号,要求 ...

  9. uva 540 - Team Queue(插队队列)

    首发:https://mp.csdn.net/mdeditor/80294426 例题5-6 团体队列(Team Queue,UVa540) 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队 ...

  10. 【UVA - 540】Team Queue (map,队列)

    Team Queue Descriptions: Queues and Priority Queues are data structures which are known to most comp ...

随机推荐

  1. Linux基础和网络管理上机试题 - imsoft.cnblogs

    一.(使用at命令实现任务的的自动化,要求用一条条的指令完成)      找出系统中任何以txt为后缀名的文档,并且进行打印.打印结束后给用户foxy发出邮件通知取件.指定时间为十二月二十五日凌晨两点 ...

  2. hdu5230

    bc41第三题: 由 1 - n-1 这 n-1 个数组成 l - c 到 r - c 闭区间内的数共有多少种组合方法: 据称本来应该也比较简单吧,xiaoxin说了个五边形数,然后纷纷找了五边形数的 ...

  3. test20190324 树

    题意 树(tree.cpp/c/pas) [题目背景] 这道题标算在评测机上的时间约为自己电脑的2/3 [问题描述] [输入格式] 共 n+2 行.第 1 行 1 个数,n. 后面 2-n 行,每行两 ...

  4. LG2945 【[USACO09MAR]沙堡Sand Castle】

    经典的贪心模型,常规思路:将M和B排序即可 看到没有人用优先队列,于是我的showtime到了 说下思路: 读入时将数加入啊a,b堆中,不用处理(二叉堆本来就有有序的性质) 读完后逐个判断,照题目模拟 ...

  5. dbt seed 以及base ephemeral使用

    seed 可以方便的进行数据的导入,可以方便的进行不变数据(少量)以及测试数据的导入, base 设置为 ephemeral(暂态),这个同时也是官方最佳实践的建议 项目依赖的gitlab 数据可以参 ...

  6. Oracle 10g RAC OCR 和 VotingDisk 的备份与恢复

    Oracle RAC 中OCR 和Voting Disk 备份在我的blog: Oracle RAC 常用维护工具和命令 中已经有说明,现在再次把它单独拿出做一个说明, 因为OCR 和Voting D ...

  7. Linux开机自动启动ORACLE设置

    1.安装好Oracle数据库后: 执行 dbstart和dbshut会提示: [oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, ...

  8. POJ1179 Polygon

    题目:http://poj.org/problem?id=1179 石子合并的升级版.有负值.但运算符只有 + 和 * . 考虑负值对原做法正确性的影响:之所以仅记录最大值可能不对,是因为有可能负数 ...

  9. 2013-7-27 802.1X学习

    最近搭了企业级加密的server 2003服务器,教程完全google,无任何自主创新.折腾了一周,总算搞定了,同时也验证了server 2003下的TLS和PEAP0加密算法是正常的. 至于搭建se ...

  10. 【Spring学习笔记-MVC-3】SpringMVC返回Json数据-方式1

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...