烹調方案 (DP)

2022-05-05 18:30:09 字數 927 閱讀 1424

傳送門

一道非常好的dp。看這個可能會覺得與01揹包很像,不過這個的問題在於現做的菜餚會影響到後面的菜餚的價值。

我們在進行01揹包dp時,一件物品的價值是不隨著其被列舉的位置改變而改變的,但是這道題中不行。假設你現在有兩種菜餚,你先做第一種會導致第二種的價值受損,反之第一種的價值就會受損,我們並不能立即知道哪種更優,而正常的01揹包在dp的時候已經選過的物品就完全不再考慮了,所以如果這樣的話,被更優的答案放在後面在本題中計算會出錯。

那我們就有了另一種方法,把最優的放在前面,這樣依次排序即可。具體怎麼排?你選取兩種狀態自行列式兩邊消去後發現,對於狀態x,y,如果有c[x]*b[y]

看一下**。

#include#include

#include

#include

#include

#include

#include

#define rep(i,a,n) for(int i = a;i <= n;i++)

#define per(i,n,a) for(int i = n;i >= a;i--)

#define enter putchar('\n')

using

namespace

std;

typedef

long

long

ll;const

int m = 50005

;ll read()

while(ch >= '

0' && ch <= '9'

)

return ans *op;

}struct

food

}f[60

];ll t,n,dp[

100005],maxn = -1

;int

main()

變種dp 洛谷P1417 烹調方案

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

動態規劃 烹調方案

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

洛谷 P1417 烹調方案 揹包dp

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