#41557: C++詳解


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
b131. NOIP2006 2.开心的金明 -- NOIP2006普及組 | From: [24.147.249.5] | 發表日期 : 2024-08-06 09:50

宣告一個 Map 代表不同價錢可以獲得的最大值,然後宣告另外一個 Map (這邊叫 Map1) 來做新資料的計算,算完再把資料存到 Map 中。

每次收到一個資料時都宣告 Map1,然後跑 for(auto mm:Map1) 的迴圈,並且宣告兩個變數分別為 newMoney 和 newPrice,兩個變數的值分別為「mm.first + 收到的錢」以及「mm.second + (收到的錢*重要度)」。如果 newMoney > N,代表已經超過預算,直接 continue,否則就判斷舊的 Map[newMoney] 是否 < newPrice,如果 newPrice 較大則將 Map[newMoney] 設為 newPrice,然後每次判斷 newPrice 最大值,答案就是其最大值。

 

範例程式碼

 
ZeroJudge Forum