洛谷P1417 烹調方案 貪心 揹包dp

2022-05-20 12:38:36 字數 681 閱讀 2911

題目大意:一共有 n 件食材,每件食材有三個屬性,ai,bi和ci,如果在t時刻完成第i樣食材則得到ai-t*bi的美味指數,用第i件食材做飯要花去ci的時間。眾所周知,gw的廚藝不怎麼樣,所以他需要你設計烹調方案使得美味指數最大。

題解:這道題需要對揹包問題有更加深入的理解。

可以發現,如果不進行排序操作的話,先選的物品會對後續選擇的物品的價值產生影響,即:答案與選擇的先後順序有關。這與 0-1 揹包問題不同,對於 0-1 揹包問題來說,先選擇的物品對後續物品答案的貢獻沒有影響,因此與選擇的順序無關。對於這種物品之間價值會相互影響的情況,首先考慮固定乙個子集,對集合內的元素按某種順序排序,擴充套件到整個集合來說,即:先進行排序,再進行 dp 即可。

**如下

#include using namespace std;

typedef long long ll;

const int maxn=55;

const int maxx=1e5+10;

int t,n;

ll dp[maxx];

struct nodet[maxn];

bool cmp(const node &x,const node &y)

void read_and_parse()

void solve()

int main()

洛谷 P1417 烹調方案 揹包dp

由於你的幫助,火星只遭受了最小的損失。但gw懶得重建家園了,就造了一艘飛船飛向遙遠的earth星。不過飛船飛到一半,gw發現了乙個很嚴重的問題 肚子餓了 gw還是會做飯的,於是拿出了儲藏的食物準備填飽肚子。gw希望能在t時間內做出最美味的食物,但是這些食物美味程度的計算方式比較奇葩,於是絕望的gw只...

洛谷P1417 烹調方案

由於你的幫助,火星只遭受了最小的損失。但gw懶得重建家園了,就造了一艘飛船飛向遙遠的earth星。不過飛船飛到一半,gw發現了乙個很嚴重的問題 肚子餓了 gw還是會做飯的,於是拿出了儲藏的食物準備填飽肚子。gw希望能在t時間內做出最美味的食物,但是這些食物美味程度的計算方式比較奇葩,於是絕望的gw只...

洛谷P1417 烹調方案

這道題不同於普通的01揹包,不同的先選擇的做菜策略會對之後產生不同的影響,即不滿足 無後效性 但是,考慮一種選擇策略,假設有兩個先後做的菜i和j,交換他們的順序會產生什麼影響呢?假設ij之前的時間為t 先i後j a i t c i b i a j t c i c j b j 先j後i a j t c...