#40848: C++詳解


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
f631. 同學會 -- 林口高中練習題 | From: [114.172.88.113] | 發表日期 : 2024-06-15 10:28

可以使用 Priority_Queue 來將每個人持有的金額存進去,存資料時可以使用 .push(金額)。當要取資料時,可以使用 .top(),就會回傳目前最大值。

 

使用 While迴圈,如果目前最大金額可以支付目前的菜,就將最大金額 -= 菜的價錢,不能使用 .top() -= 菜的價錢,所以可以將一個變數設定為 .top(),然後將這個變數 -= 菜的價錢,然後使用 .pop(),這樣會將資料中最大的金額刪除,並且重新 .push(剛剛進行減法的變數)。如果不夠支付金額,則用剛剛的辦法,只是這次將變數歸零,並且將目前菜的價錢 -= 最大金額,然後繼續跑 While迴圈。

 

可以設定一個布林值判斷是否要輸出「Oh My God」,如果已經完蛋了之後的 For迴圈只要收到資料之後都可以直接 Continue。

 

範例程式碼

 
ZeroJudge Forum