UVA - 540:Team Queue

主要的關鍵在于:不要試圖讓所有團隊的人在一個隊列里面,因為這樣如果新入隊的是一個前面團隊的成員則必須先出隊再入隊。

應該把每個團隊看做一個整體,用一個隊列維護團隊的順序,用t個隊列維護每個團隊內部的順序。

還有就是要維護成員編號到團隊的映射關系,我這里用了一個一維數組,因為覺得1e6也不是很大。看到書里面用的map,覺得可以但是沒必要。

我還用了一個數組去維護每個團隊是否有人站隊。看書里面的代碼才發現完全是多余的,我們可以通過每個團隊自己的隊列是不是空來判斷。

多組樣例輸入,應該把循環放在主函數里面,然后把初始化、讀入、處理分開。多組樣例的初始化十分重要,很容易出現問題。這里因為初始化不是很復雜我和讀入放在了一起。

感覺自己的代碼結構清晰一點。書里面的命名都好簡潔,覺得自己如果這樣命名很快就忘記是干什么的了。可能還是水平不夠,駕馭不了太復雜的代碼。
還有就是不要忘記關閉同步加速cin/cout

#include <iostream>
#include <string>
#include <array>
#include <queue>using namespace std;namespace {constexpr int MAX_TEAM = 1005;constexpr int MAX_MEM = 1e6 +5;array<int, MAX_MEM> id;     //team id of each memberqueue<int> team;            //team queuearray<queue<int>, MAX_TEAM> team_member;//member queue in each teamarray<bool, MAX_TEAM> is_in_queue;int t;int case_num = 0;
}void input() {while (!team.empty()) team.pop();int n, x;for (int i = 0; i < t; ++i) {is_in_queue[i] = false;while (!team_member[i].empty()) team_member[i].pop();cin >> n;while (n--) {cin >> x;id[x] = i;}}
}void deal() {string cmd;int x;int team_id;while (cin >> cmd && cmd[0] != 'S') {if (cmd[0] == 'E') {cin >> x;if (is_in_queue[id[x]]) {team_member[id[x]].push(x);} else {team.push(id[x]);is_in_queue[id[x]] = true;team_member[id[x]].push(x);}} else {team_id = team.front();auto &the_team = team_member[team_id];cout << the_team.front() << "\n";the_team.pop();if (the_team.empty()) {team.pop();is_in_queue[team_id] = false;}}}
}int main() {ios::sync_with_stdio(false);while (cin >> t) {if (t == 0) {break;}++case_num;cout << "Scenario #" << case_num << "\n";input();deal();cout << "\n";}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383536.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383536.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383536.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UVA-136:Ugly Numbers

很簡單的一道題&#xff0c;但是我竟然蠢到想不明白為什么如果從頭生成會出現大量重復的數字。 寫的時候主要出現的錯誤在爆int上&#xff0c;一定要注意數據范圍。 #include <iostream> #include <queue> #include <set>using namespace std; using ll lo…

類的成員函數可以訪問屬于該類的任意對象的私有變量

之前在書上看到成員函數可以訪問類的私有變量的時候覺得是廢話嘛&#xff0c;如果成員函數都不能訪問那私有變量不就變成了花瓶了。然而發現自己還是太naive。 這句話的意思是&#xff1a;在類的作用域內&#xff0c;包含成員函數、靜態成員函數和友元函數內&#xff0c;可以訪…

GMP使用入門

最近寫了一個高精度的模板&#xff0c;想要用GMP庫測試一下&#xff0c;總結一下GMP環境的搭建。 環境搭建&#xff1a;GMP大法教你重新做人(從入門到實戰) 解壓.tar.lz的 時候可能會遇到一點問題&#xff0c;可以參考這個博客&#xff1a;.tar.lz壓縮包解壓 需要注意的是C需要…

UVA - 400:Unix ls

題目的難點在于要求前面的每一列的是最大長度L2&#xff0c;最后一列的長度是L。對于寬度為WIDTH60的一行來說&#xff0c;一行可以放下多少個單詞決定了需要多少行&#xff0c;知道了行數才能開始根據行數開始放置。 我的做法是col (WIDTH 2) / (L 2)&#xff0c;即提前給W…

UVA - 1592:Database

題目的意思是找到兩行在兩列處相等&#xff0c;主要要做的是記錄某個值是否重復出現過。 經過思考&#xff0c;我的思路是&#xff1a;每一列用一個unordered_map<string,vector<int>>記錄單詞出現的行數&#xff0c;對于某一行中的兩列&#xff0c;如果有兩個元素…

C++ array初始化需要雙層大括號

對于array的初始化我們可以使用列表初始化&#xff1a; array<int, 8> test {1,2,3,4,5,6,7,8 };但是當我們不再使用簡單的內置類型array時&#xff1a; array<pair<int, int>, 8> dirs {{-1, -1},{-1, 0},{-1, 1},{0, -1},{0, 1},{1, -1},{1, 0},{1, 1}…

Qt for Android環境配置

最近想寫一個小APP&#xff0c;但是又不想用Android Studio進行開發&#xff0c;想要用C進行開發&#xff0c;聽說Qt可以進行Android開發&#xff0c;就想嘗試一下&#xff0c;結果花了一天時間來配置環境。。。而且發現windows下配置環境更簡單一些&#xff08;我中途還切換到…

UVa-12333:Revenge of Fibonacci 高精度

之前自己仿照紫書上寫了高精度庫&#xff0c;完善了乘法、減法&#xff0c;并且通過了和C高精度庫GMP的對拍測試&#xff0c;并在一些OJ上過了一些高精度的模板題&#xff0c;代碼倉庫地址&#xff1a;https://github.com/Edward-Elric233/BigInt 求解思路 題目的意思是求前1…

vim命令筆記

vim折疊函數&#xff1a;https://www.cnblogs.com/zlcxbb/p/6442092.html Vim錄制宏及使用&#xff1a;https://www.jianshu.com/p/9d999c72a9f3 將vim與系統剪貼板的交互使用&#xff1a;https://zhuanlan.zhihu.com/p/73984381

Educational Codeforces Round 114總結

緒論 https://codeforces.com/contest/1574/ 以前想要打CF&#xff0c;總是覺得沒有時間&#xff0c;要做這個&#xff0c;要做那個&#xff0c;現在時間充裕了一些&#xff0c;想要多打一些CF&#xff0c;但是光打比賽不總結是沒有什么幫助的&#xff0c;這是我從以前的ACM訓…

UVA - 210:Concurrency Simulator

題目鏈接&#xff1a;https://vjudge.net/problem/UVA-210 題目分析 就是一道模擬題&#xff0c;但是細節有點多。 寫代碼兩個小時&#xff0c;調試代碼用了兩天。。。很長時間不刷題了&#xff0c;這道雖然算法簡單但是細節滿滿的題目對我來說是一個很好的熱身。 盡量不要去…

UVA - 514:Rails

題目鏈接&#xff1a;https://vjudge.net/problem/UVA-514 題目分析 題目的意思是給一個棧輸入一系列數據&#xff0c;在這個過程中可以出棧&#xff0c;看能否達到某個結果。 剛開始我覺得這個情況好多&#xff0c;因此不是用模擬&#xff0c;而應該觀察結果本身。對于結果中…

UVA - 442:Matrix Chain Multiplication

題目鏈接&#xff1a;https://vjudge.net/problem/UVA-442 題目分析 題目的意思非常簡單&#xff0c;就是給定一個矩陣乘法的表達式然后計算就可以了。隨便寫寫 AC代碼 #include <iostream> #include <deque> #include <vector> #include <string>…

leetcode869. 重新排序得到 2 的冪

題目連接&#xff1a;https://leetcode-cn.com/problems/reordered-power-of-2/ 題目分析 如果直接順著題目的思路&#xff0c;得到數字n的全排列&#xff0c;然后再去判斷其是不是2的冪是比較復雜的。 我們應該注意到&#xff0c;因為數字是可以隨意排列的&#xff0c;因此所…

使用wireshark+ssh+tcpdump遠程抓包

因為需要抓取遠程服務器上的數據包&#xff0c;又不想使用tcpdump這種命令行工具進行&#xff08;用了wireshark后誰還愿意去看密密麻麻的命令行呢&#xff09;&#xff0c;所以在網上查找了一下使用wireshark遠程抓包的方法&#xff0c;在這里記錄一下。 原生支持 wireshark…

C++ Variadic Templates(可變參數模板)

本文參考侯捷老師的視頻&#xff1a;https://www.youtube.com/watch?vTJIb9TGfDIw&listPL-X74YXt4LVYo_bk-jHMV5T3LHRYRbZoH 以及C primer第五版 相關內容。 可變參數模板函數 //遞歸的終止條件 void print() {} //Variadic Templates //一般用于遞歸處理 template <…

Ubuntu修復Fix Busybox Initramfs錯誤

今天早上我打開電腦&#xff0c;進入Ubuntu系統&#xff0c;結果黑屏了&#xff0c;屏幕顯示&#xff1a; BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter help for a list of built-in commands.(initramfs)然而我并不知道這個是什么意思&#x…

Leetcode第284場周賽

緒論 最近發現Leetcode每周的周賽難度挺適合我的&#xff0c;而且時間也比較友好&#xff08;不像Codeforces每次都是半夜&#xff09;。所以連續參加了三周的周賽。這次才想起來應該記錄一下自己的參賽歷程。一方面是總結經驗&#xff0c;另一方面有了記錄就更有動力去提升&a…

Leetcode第286場周賽

緒論 上周因為有事沒有參加周賽&#xff0c;這周沒有錯過。這次周賽拿到了人生第一個AK&#xff0c;參加大大小小的比賽這么多次&#xff0c;從來沒有AK過&#xff0c;淚目了。 感覺這次比賽的思維難度對我來講稍高一些&#xff0c;前三道題就花了一個小時&#xff0c;而以往…

第287場周賽

緒論 雖然是上周日參加的比賽&#xff0c;但是這周沒有怎么學習&#xff0c;每天就是玩耍。也導致對周賽的總結遲遲沒有進行。想著再拖下去下次周賽都要開始了&#xff0c;在這里補一下。 這場比賽總體比上場簡單一些&#xff0c;但是最后一道題因為忘記初始化類內變量導致調試…