close

可以練指標的好題(拇指)
//我用了一卡車(指標陣列都出來了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"
arrow
arrow
    全站熱搜

    aikosenoo 發表在 痞客邦 留言(0) 人氣()