可以練指標的好題(拇指)
//我用了一卡車(指標陣列都出來了v( ̄︶ ̄)y)
============為了方便我們借用sa的翻譯=============
(補註)
第一行為一個整數n代表該筆測資有幾組,當n==0時結束程式。
接下來n行為分組,每行第一個數字m代表該組有多少個成員
後面m個數字則為組員的代表的值。
(補註完成)
將人分成最多一千組,接著有一連串指令代表結束、加入到佇列或取出
加入的時候如果已經有同組的在,就加在他們的後面
如果沒有,就加在佇列的最後面
然後每遇到一次取出的指令就把佇列的第一個輸出並刪除
===============from 索尼小站‧sa072686板精華區======
基本上就是把整個隊伍當作鏈結串列來串(對、是所有人串在一個)
另外我運用到了雜湊的概念
也就是用一個表格
把分組時組員代表的數值對應到的team記錄著,這樣之後輸入數值就知道是哪一組的了。
(例如200在第二組,那麼member[200]=2。)
再來,如果每次都從頭搜的話,會TLE
要加快速度的話,便要記錄
1. 每組目前的最後一個 (可用指標陣列)
2. 每組目前的人數 (int)
3. 目前鏈結串列的尾巴 (指標)
如果新加入的元素那組人數==0 就直接串在尾巴,然後該組人數++。
如果新加入的元素已經有同組成員,那麼就去剛剛記錄每組最後一人的表格找到那最後一
個人,並串在他後面成為新的最後,並且人數也要++。
另外記得,如果要加到同組成員之後,要先檢查他是否指向NULL
如果是,就代表他是本來的尾巴,而新的加上去就變成新的尾巴了~
DEQUEUE則是把最前面的那個元素取出及印出,變動頭的指標到下個即可。
(所屬的組人數--)
大概是這樣,有點亂XD"
- Feb 10 Sun 2008 19:11
[鏈結串列] ACM #540
close
全站熱搜
留言列表