博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
540 - Team Queue
阅读量:6412 次
发布时间:2019-06-23

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

hot3.png

题意: 

有组织排队, 即每个人要开始排队时, 先查找是否有与他同组织的人已经在排队, 若是, 则这个可以直接插队到他所在组织的最后; 若找不到组织, 则只能排到队伍的最后. 有 ENQUEUE 与 DEQUEUE 两种命令, ENQUEUE 表示把当前人按前面提到的规则入队, DEQUEUE 表示把队伍最前端的人输出后出队. 

思路:

1. 使用 list 来存放各个组织的队伍.
2. 使用 vector 来存放各个 list 的首元素, 主要是为了 DEQUEUE 时能够是从实际队列的头向尾出队的, 即先出队的总是 vector 中排在最前面的 list 的元素; 当此 list 为空后, 就把此 list 从 vector 中删除, 再从下一个 list 中取元素出来进行 DEQUEUE .
3. 每次 ENQUEUE 后, 都要判断此 list 是否已在 vector 中, 若未在, 则说明此人是未找到组织, 新增的一个 list, 需要把其补到 vector 的最后.

要点:

1. list insert 时, 若传进来的 iterator 为 end(), 会直接插在最后面吗? 会的!!!

题目:

代码:

# include 
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
using namespace std;int main(int argc, char const *argv[]){ #ifndef ONLINE_JUDGE freopen("540_i.txt", "r", stdin); freopen("uva_o.txt", "w", stdout); #endif int numScenario = 0; int numTeam; cin >> numTeam; while (numTeam != 0) { cout << "Scenario #" << ++numScenario << endl; map
elementTeam; // 记录每个 team element 和其对应的队号 map
*> queueHeads; // 记录每个 team 的键表头指针 vector
queueOrder; // 记录从头到尾的各个 queue, 排在前面的在 // DEQUEUE 时会先被 pop_front 出去 // 读入 team 信息 for (int i=0; i
> numElements; for (int j=0; j
> element; elementTeam[element] = i; } list
* queue = new list
(); queueHeads[i] = queue; } // 读入命令, 并执行 string cmd; cin >> cmd; while (cmd != "STOP") { if (cmd == "DEQUEUE") { // 取第一个出来 DEQUEUE int noQueue = queueOrder[0]; list
* queue = queueHeads[noQueue]; // 若 dequeue 后队伍为空, 则从 vector 删掉 cout << *(queue->begin()) << endl; queue->pop_front(); if (queue->empty()) queueOrder.erase(queueOrder.begin()); } else { // cmd == "ENQUEUE" int element; cin >> element; int noQueue = elementTeam[element]; list
* queue = queueHeads[noQueue]; queue->push_back(element); if (find(queueOrder.begin(), queueOrder.end(), noQueue) == queueOrder.end()) { queueOrder.push_back(noQueue); } } cin >> cmd; } cout << endl; cin >> numTeam; } return 0;}

环境: C++ 4.5.3 - GNU C++ Compiler with options: -lm -lcrypt -O2 -pipe -DONLINE_JUDGE

转载于:https://my.oschina.net/zenglingfan/blog/148957

你可能感兴趣的文章
Oracle-单表查询
查看>>
redis 系列5 数据结构之字典(上)
查看>>
爬虫数据库MongoDB的介绍
查看>>
4.2WebHost配置「深入浅出ASP.NET Core系列」
查看>>
Redis 哨兵Sentinel 高可用(学习笔记九)
查看>>
mybatis关于Criteria的用法小坑
查看>>
报考排队1小时?平安科技说只需90秒
查看>>
T-SQL学习中--窗口函数
查看>>
浅谈web开发
查看>>
Go 语言从新手到大神:每个人都会踩的五十个坑 (13-22)
查看>>
Android——Matrix变换矩阵的探索(1)
查看>>
04.构造函数 析构函数 拷贝函数
查看>>
到目前为止,生活教会给你最重要的一件事是什么?
查看>>
重拾Java(2)-运算符
查看>>
Linux系统诊断小技巧(15):启停问题之如何修复文件系统损坏
查看>>
Go语言基础语法-4
查看>>
使用Spring Boot 发送邮件(持续更新...)
查看>>
CentOS 7 安装Node
查看>>
初探性能优化--2个月到4小时的性能提升!
查看>>
Java NIO(七)Selector
查看>>