P1156 垃圾陷阱

2022-04-06 15:04:02 字數 725 閱讀 1072

這是一道揹包,但是對於放東西有條件限制

首先思考,對於每乙個物品,除非放不了,否則就要放,不放上就吃掉,肯定不能扔那不管

我們定義dp[i][j]為第i個物品,高度為j的時候能活的最長時間,那麼整個轉移過程就是

for(int i=1;i<=g;++i)}}

ans=max(ans,dp[i][0

]);//最大時間肯定是全吃了,不過可能在某一刻活不到下乙個垃圾o

}

注意,每乙個狀態可能從兩個狀態轉移過來,所以要取max

#include#include

#include

using

namespace

std;

struct

rru[

1001

];int

d,g;

int dp[1001][20001

];int

cmp(r x,r y)

intans;

intff;

intmain()

sort(ru+1,ru+g+1

,cmp);

dp[0][0]=10

;

for(int i=1;i<=g;++i)}}

ans=max(ans,dp[i][0

]); }

cout

<

return0;

}

ac

P1156 垃圾陷阱

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

P1156 垃圾陷阱

一道dp難題 鑑於我最近學了dp,所以就在訓練裡找了到dp題 在debug乙個多小時之後,我發現好水好難啊!上連線 p1156 乙隻腦殘奶牛把自己弄到深度為d的垃圾井裡,而且它一開始只能活10小時,所以它莫名其妙知道了垃圾倒下的t 時間 和h 高度 對於每個垃圾,它要麼吃了 口區 要麼堆高高,從而逃...

洛谷 P1156 垃圾陷阱

卡門 農夫約翰極其珍視的一條holsteins奶牛 已經落了到 垃圾井 中。垃圾井 是農夫們扔垃圾的地方,它的深度為d 2 d 100 英呎。卡門想把垃圾堆起來,等到堆得與井同樣高時,她就能逃出井外了。另外,卡門可以通過吃一些垃圾來維持自己的生命。每個垃圾都可以用來吃或堆放,並且堆放垃圾不用花費卡門...