STL,map,queue 團體佇列

2021-08-21 16:29:09 字數 2385 閱讀 4642

有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

0sample 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

#include

#include

using

namespace

std;

const

int maxt = 1000+10;

int main()

}queue

q,q2[maxt];//q時團隊的佇列,而q2[i]是團隊i成員的佇列

for(;;)

else

if(cmd[0]=='e')

} printf("\n");

}}

Team Queue 團體佇列(queue運用)

有t個團隊的人正在排乙個長隊。每次新來乙個人時,如果他有隊友在排隊,那麼這個新人會插隊到最後乙個隊友的身後。如果沒有任何乙個隊友排隊,則他會排到長隊的隊尾。輸入每個團隊中所有隊員的編號,要求支援如下3種指令 前兩種指令可以穿插進行 對於每個dequeue指令,輸出出隊人的編號。ps 輸出要求 每一組...

團體佇列 UVA540 Team Queue

有t個團隊的人正在排乙個長隊。每次新來乙個人時,如果他有隊友在排隊,那麼新人會插隊到最後乙個隊友的身後。如果沒有任何乙個隊友排隊,則他會被排到長隊的隊尾。輸入每個團隊中所有隊員的編號,要求支援如下3中指令 enqueue x 編號為x的人進入長隊 dequeue 長隊的隊首出隊 stop 停止模擬 ...

Team Queue UVA 540 團體佇列

題目鏈結 有t個團隊的人正在排乙個長隊。每次新來乙個人時,如果他有隊友在排隊,那麼這個新人會插隊到最後乙個隊友的身後。如果沒有任何乙個隊友排隊,則他會排到長隊的隊尾。輸入每個團隊中所有隊員的編號,要求支援如下3種指令 前兩種指令可以穿插進行 對於每個dequeue指令,輸出出隊的人的編號。分析 本題...