題面:
超市裡有n件商品,每個商品都有利潤p
i'>pi
和過期時間d
i'>d
i,每天只能賣一件商品,過期商品(即當天d
i<=
0'>di<=0
)不能再賣。
求合理安排每天賣的商品的情況下,可以得到的最大收益是多少。
第一眼看過去,呀,我應該先選利潤大的。
但是因為選了利潤大的,錯失了一些利潤還行的,而且就算 選了利潤還行的也可以繼續選利潤大的怎麼辦?
這樣看起來,保質期,利潤,保質期+利潤,這些指標排序都是不可行的。
那不如,我們就一路選過去。
我們先按照保質期從小到大排序,只要在保質期範圍內我們就選。
終於,我們碰到了乙個不能選的物品。
那我們從已經選了的物品中挑乙個利潤最小的,嘗試著替換掉是否更優。
為什麼可以替換呢?因為按照時間排序的話,能選前面的也一定能在同樣的時間上選後面的。
優先佇列可以很方便的實現。
#include usingnamespace
std;
struct
pa[10009
];priority_queue
,greater >q;
bool
com(p a,p b)
intn;
intmain()}}
cout
}return0;
}
反悔自動機與反悔堆 有關貪心的反悔操作
其實兩個東西都是堆。區別只不過乙個是利用差值等巧妙設計等效權值,另乙個則單純進行判斷。反悔自動機 名字是我自己起的 貪心是不能反悔的。因為它就是選擇當前的最優解。但是如果當前最優解不是全域性最優解怎麼辦?我們可以設計一種反悔的方法,並且和貪心的手法結合。使得貪心隨便選擇,都可以達到正解。姑且叫反悔自...
種樹 反悔操作 貪心
本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 具體的解析大佬部落格裡有 推薦 部落格 我這裡是來講下如何 實現的 我們用pair來實現堆優化,first代表權值,second代表權值位置 1 void del int x 以上 如何理解呢?先看一幅圖 我們先算4個點 如果依照...
概述 貪心「反悔」策略 模型
這種 反悔 操作真的很強 貪心操作中保證每一步都選取當前最優解,但通過某種轉換將一步更改操作轉為乙個可選取的物品。又到了諾德縣的百姓孝敬夾克大老爺的日子,帶著數量不等的銅板的村民準時聚集到了村口。夾克老爺是一位很 善良 的老爺,為了體現他的仁慈,有一套特別的收錢的技巧。1 讓所有的村民排成一隊,然後...