2018 E PAT單位排行 25分

2021-10-23 12:50:10 字數 1641 閱讀 9944

最開始我的想法是,把學校名字雜湊,然後建乙個266

26^6

266那麼大的結構體陣列,但是那樣子占用太多記憶體,陣列索引也要用長整形。因此我換了乙個思路。

首先建立乙個map容器,構造學校名字到結構體的對映。然後依次讀取資料,把資料按照索引存入。由於map無法排序,所以開乙個新的結構體陣列,借助乙個迴圈吧每乙個map的值(也就是結構體)存到結構體陣列中。最後對結構體進行排序順次輸出。

(這個方法特別適合那種動態輸入,必須要全輸入之後才能知道有多少各學校,因為鍵是有重複的,因此不能順次存入)

這裡的string我用的c++中的string容器,所以用scanf輸出的時候需要用.c_str()轉化一下。其實用cstring也完全可以。

;\\注意左開右閉,從1開始使得下標即排名

cout<

int r=1;

for(

int i=

1;i<=cnt;i++

)elseif(

(int

)s[i]

.total==

(int

)s[i-1]

.total)

else

}return0;

}

1085 PAT單位排行(25 分)

我是卡在了最後乙個測試點。也就是 測試點 5 不是執行超時的問題,反而是答案錯誤。花了我好長時間終於發現了問題 是這樣。因為最後答案要求 加權總分定義為乙級總分 1.5 甲級總分 頂級總分 1.5的整數部分 我也注意到最後輸出是整數部分。但是我忘記了比較的時候!我用double與double 比較 ...

1085 PAT單位排行 (25 分

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入格式 輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校 其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表...

1085 PAT單位排行 25 分

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表甲級,t代表...