鏈結
按照過期時間從小到大排序(兩個元素一組可以用pair,放在 vector裡面,排序)
當前商品的個數 > 過期時間,把利潤最小的替換出去(小根堆)
#include #define int long longview codeusing
namespace
std;
intn;
priority_queue
,greater> heap;//
小根堆signed main()
int res = 0
;
while
(heap.size())
res +=heap.top(), heap.pop();
cout
<< res <
}return0;
}
AcWing 145 超市 貪心
有n個商品,商品有 和過期時間,在過期時間之前才可以賣出,每天只能賣乙個。求最大利潤。假如直接對過期時間排序然後貪心會wa。事實上先把所有物品按過期時間排序,把商品的 放進小頂堆裡面,檢測到乙個商品的過期時間 當前堆的大小時,說明現在的時間不夠 所有的商品,就把 最小的丟掉。為什麼這樣的對的呢?每次...
帶 反悔 的貪心 超市
題面 超市裡有n件商品,每個商品都有利潤p i pi 和過期時間d i d i,每天只能賣一件商品,過期商品 即當天d i 0 di 0 不能再賣。求合理安排每天賣的商品的情況下,可以得到的最大收益是多少。第一眼看過去,呀,我應該先選利潤大的。但是因為選了利潤大的,錯失了一些利潤還行的,而且就算 選...
貪心 STL 鋸木
題目描述 lazychild需要將一根非常長的木棒切成n段,每段的長度分別為l1,l2,ln個長度單位。li i 1,2,n 恰好就是原木棒的長度。我們認為切割時僅在整數點處切且沒有木材損失。lazychild發現,每一次切割花費的體力與該木棒的長度成正比,不妨設切割長度為1的木棒花費1單位體力。l...