先給出t個團體,並給出每個團體有多少人和每個人的編號,然後所有團體一起排隊,排成一條大佇列,排隊的原則是,乙個成員加入,如果這個成員所在的團體已經有人在排隊了,那麼他就加到他所在團體的最後面,而不是整個大佇列的最後。如果整個大佇列中沒有他的團體,也就是他是他的那個團體第乙個來的人,那麼他就要排在整個大佇列的最後(當然,他成為了他這個團體的第一人,以後他的隊友來了就可以排他後面)
[輸入]
輸入檔案將包含乙個或多個測試案例。每個測試案例第乙個是團隊t的數量。然後,接下來的t行為團隊每個人的編號,編號是整數,範圍在0 - 999999。乙個團隊可以由多達1000個元素組成。
最後,如下命令指令。有三種不同的指令:
enqueue x - 輸入元素x入隊佇列
dequeue -處理第乙個元素並從佇列中刪除它
stop - 結束
[輸出]
對於每乙個測試案例,首先列印一句"scenario #k」,其中k是測試案例數。然後,為每個佇列的命令,輸出出隊一行元素。每個測試案例後輸出乙個空行(包括最後乙個)
[樣例輸入]
23 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
25 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
0[樣例輸出]
scenario #1
101102
103201
202203
scenario #2
259001
259002
259003
259004
259005
260001
#includeusing namespace std;
/*這道題目其實運用了乙個小技巧,
即不直接模擬全隊,
而是選擇運用將乙個大的佇列化解成由各個團體組成的小佇列,
再將佇列的編號放入到原來的大佇列中,
這樣就可以避免將整乙個佇列遍歷一次,操作也會相對簡單,只用了pop和push */
const int maxt=1000+10;
int main()
else if(cmd[0]=='e')
} printf("%d\n");
} return 0;
}
演算法競賽入門經典(第2版)例題(第3章)
例題 3 1 tex中的引號 tex quotes include intmain else printf c c return0 例題 3 2 wertyu include char s 1234567890 qwertyuiop asdfghjkl zxcvbnm,int main 例題 3 3...
演算法競賽入門經典 第2版 習題2 3詳解
畫圖分析 第二個迴圈 列印 for k 1 k 2 n i 1 k printf n 換行 return 0 執行結果 上面寫的是列印倒三角形的 到這裡我覺得還是有必要寫乙個列印正三角形的 列印 for k 1 k 2 i 1 k printf n 換行 return 0 執行結果 綜上所述 其實這...
演算法競賽入門經典(第二版)第2章習題
2.4.1 輸出技巧 include intmain 習題2 2 水仙花數 daffodil 輸出100 999中的所有水仙花數。若3位數abc滿足abc a 3 b 3 c 3,則稱其為水仙花數。include intmain return 0 習題2 3 韓信點兵 hanxin 相傳韓信才智過人...