1. 程式人生 > >UVA 540 Team Queue【queue的用法】

UVA 540 Team Queue【queue的用法】

source:

題意:就是模擬平時食堂排隊,學生分為不同的組,然後每來一個學生先從前往後看有沒有自己一個組的,有的話就插列插到自個兒組最後一個。現在給出分組名單然後進行多次詢問,輸出每次出隊詢問時出隊的學生編號。

思路:對於每個組分別用一個queue模擬,然後組號也進行queue模擬即可

關於queue的用法:

標頭檔案:#include<queue>

宣告:queue<int>  q

基本操作:

  • q.push(x) 將x加到隊尾
  • q.pop()  將隊頭第一個元素彈出 注意:並不返回該元素的值
  • q.front()  返回隊頭元素值
  • q.back()  返回對尾元素值
  • q.empty(),當佇列空時,返回true
  • q.size() 返回佇列中元素的個數
注意:佇列沒有clear()方法!

程式碼如下:

#include<stdio.h>
#include<queue>
#include<string.h>
using namespace std;

int belong[1000005],isinq[1005];
queue<int> seq;
queue<int> q[1005];

int main()
{
    int t,n,team,x,T=1;
    char s[10];
    while(scanf("%d",&t)!=EOF && t!=0)
    {
        printf("Scenario #%d\n",T++);
        memset(belong,0,sizeof(belong));
        memset(isinq,0,sizeof(isinq));
        for(int i=1;i<=t;i++) while(!q[i].empty()) q[i].pop();
        while(!seq.empty()) seq.pop();
        for(int i=1;i<=t;i++)
        {
            scanf("%d",&n);
            for(int j=0;j<n;j++)
            {
                scanf("%d",&x);
                belong[x]=i;
            }
        }

        while(scanf("%s",s)!=EOF && s[0]!='S')
        {
            if(s[0]=='E')
            {
                scanf("%d",&x);
                team=belong[x];
                if(isinq[team]==0)
                {
                    seq.push(team);
                    isinq[team]=1;
                }
                q[team].push(x);
            }
            else
            {
                team=seq.front();
                printf("%d\n",q[team].front());
                q[team].pop();
                if(q[team].empty())
                {
                    isinq[team]=0;
                    seq.pop();
                }
            }
        }
        printf("\n");
    }
    return 0;
}


相關推薦

UVA 540 Team Queuequeue用法

source: 題意:就是模擬平時食堂排隊,學生分為不同的組,然後每來一個學生先從前往後看有沒有自己一個組的,有的話就插列插到自個兒組最後一個。現在給出分組名單然後進行多次詢問,輸出每次出隊詢問時

經典第五章 例 5-6 UVA 540 Team Queue(佇列的簡單應用)queue

【題目分析】用佇列來模擬一個多人排隊的過程。 #include<cstdio> #include<cstring> #include<algorithm> #i

C++ STL模板之queue佇列的用法

#include <iostream> #include <queue> #include <assert.h> /* 呼叫的時候要有標頭檔案: #incl

UVA 540 Team Queue 題意很重要!!!!!

#include <stdio.h> #include <string.h> struct Q { int el[1005]; int qu[1005]; int qu_num; } q[1005]; int v[1000005]; int output[1000005];

UVA 540 Team Queue(queue的使用)

Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well kno

UVA 540 Team Queue

har sin i++ class () div empty color front 1 #include "cstdio" 2 #include "queue" 3 #include "map" 4 using namespace std; 5 int mai

Codeforces 545D Queue貪心+模擬

D. Queue time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Little girl

UVA 11624 Fire!兩點BFS

ring help eth oca oid 全部 push_back 逃離 pre Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of

模擬環形陣列-UVA-133- The Dole Queue

題目描述: 1~N個人站成圈,公務猿 A 從1 開始順時針查過 k 個人,公務猿 B 從N開始逆時針查過 m 個人,他倆查出的人出列(可以是重複的同一個人),把每次出列的人輸出來,直到佇列中木有人。 解題思路: 看完題就想起了之前例會上學長講的陣列模擬queue功能的方法

POJ 2259Team Queue佇列

題目大意: 有tt個團隊的人正在排一個長隊。每次新來一個人時,如果他有隊友在排隊,那麼新人會插隊到最後一個隊友的身後。如果沒有任何一個隊友排隊,則他會被排到長隊的隊尾。 要求支援如下3中指令:

C++ STLQueue

stack push com col 第一個 順序 size deque lis 1、定義   class queue<>實作為一個queue(也成為FIFO,先進先出)。可以使用push()將任意數量的元素置入queue中,也可以使用pop()將元素以其插入順

hdu 1276士兵隊列問題queue

mes strong str tput bmi log while con 繼續 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1276

java提高---queue集合

繼承 In 中間 索引 沒有 集合 失敗 hsi 一個 queue集合 什麽是Queue集合? 答:Queue用於模擬隊列這種數據結構。隊列通常是指“先進先出(FIFO)”的容器。隊列的頭部保存在隊列中存放時間最長的元素,尾部保存存放時間最短的元

10、C++ STL容器適配器(stack queue priority_queue)

pub function 適配 pty str 成員 cto ali The 容器適配器   stack、queue、priority_queue 都不支持任一種叠代器,它們都是容器適配器類型,stack是用vector/deque/list對象創建了一個先進後出容器;qu

CodeForces - 266B Queue at the School (模擬)

題幹: During the break the schoolchildren, boys and girls, formed a queue of n people in the canteen. Initially the children stood in the

LeetCode題解232_用棧實現隊列(Implement-Queue-using-Stacks)

復雜 彈出 兩個棧 art 分析 完成後 棧操作 all n) 目錄 描述 解法一:在一個棧中維持所有元素的出隊順序 思路 入隊(push) 出隊(pop) 查看隊首(peek) 是否為空(empty) Java 實現 Python 實現 解法二:一個棧入,一個棧出

LeetCode題解232_用棧實現佇列(Implement-Queue-using-Stacks)

目錄 描述 解法一:在一個棧中維持所有元素的出隊順序 思路 入隊(push) 出隊(pop) 檢視隊首(peek) 是否為空(empty) Java 實現 Python 實現 解法二:一

The Dole Queue紫書例題4.3

題意: n個人圍成個圓,從1到n,一個人從1數到k就讓第k個人離場,了另一個人從n開始數,數到m就讓第m個人下去,直到剩下最後一個人,並依次輸出離場人的序號。 水題,直接上標程了 #include<stdio.h> #define maxn 25 int n

8、C++ STL容器介面卡(stack/queue/priority_queue)

容器介面卡     stack、queue、priority_queue 都不支援任一種迭代器,它們都是容器介面卡型別,stack是用vector/deque/list物件建立了一個先進後出容器;queue是用deque或list物件建立了一個先進先出容器;pr

UVA10935 Throwing cards away I模擬+queue+迴圈佇列

Given is an ordered deck of n cards numbered 1to n with card 1 at the top and card n at the bottom. The following operation is performed a