luogu1156 垃圾陷阱 動態規劃 揹包dp

2022-05-01 22:42:17 字數 708 閱讀 6648

垃圾陷阱 luogu-1156

題目大意:holsteins在距離地面d英呎的地方,fj間隔時間ti會往下扔第i個垃圾。holsteins對待每乙個垃圾都會選擇吃掉或者墊高。holsteins有10個點兒的生命值,每個垃圾會給她提供f的生命值。每小時holsteins會消耗一定的生命值。問:holsteins最早可以什麼時候爬出;否則輸出holsteins可以存活多長時間。

注釋:$2\le d\le 100$,$0 < t \le 1000$,$1\le h \le 25$,$1\le f \le 30$。

想法:揹包dp,和普通的揹包不同的是如果這個物品不選,那麼它會對holsteins的生命值產生影響,稍微判斷即可。

最後,附上醜陋的**... ...

// luogu-judger-enable-o2

#include #include #include #include #define n 110

using namespace std;

struct node

f[n];

int n,m;

int ti[n];

int dp[n];

inline bool cmp(node a,node b)

{ return a.t=0;j--)

{ if(dp[j]>=f[i].t)

{if(j+f[i].h>=n)

{cout《小結:無。

洛谷 1156 垃圾陷阱

作為一道藍色的dp神題,它成功把我卡了兩個小時。這個題對我來說確實有些困難,本人太菜了,對dp毫無感覺。後來發現這是個揹包,要麼吃要麼放,前提是餓不死。於是 ac include include include include using namespace std inline intread i...

P1156 垃圾陷阱

這是一道揹包,但是對於放東西有條件限制 首先思考,對於每乙個物品,除非放不了,否則就要放,不放上就吃掉,肯定不能扔那不管 我們定義dp i j 為第i個物品,高度為j的時候能活的最長時間,那麼整個轉移過程就是 for int i 1 i g i ans max ans,dp i 0 最大時間肯定是全...

P1156 垃圾陷阱

設 f i j 表示,扔進去 i 個垃圾,垃圾高度為 j 時,奶牛的生命值。初始化 f 陣列為 1,因為當奶牛生命值為 0 時,奶牛還是可以操縱垃圾。f 0 0 10 為奶牛的初始生命值。轉移如下 當 f i j 0 時,說明這個狀態奶牛已經死了,跳過。當 f i j 0 時,奶牛處於瀕死狀態,還可...