洛谷 P1156 垃圾陷阱

2022-09-07 22:27:41 字數 1131 閱讀 9010

2016-05-31 09:54:03

題目鏈結 :洛谷 p1156 垃圾陷阱

題目大意:

奶牛掉坑里了,給定坑的深度和方塊的個數,每個方塊都可以墊腳或者吃掉維持生命(初始為10)

若可以出來,求奶牛最早出來的時間,若出不來,求奶牛最長存活時間

解法:揹包dp

dp[i]表示在可以存活到i時刻的情況下,最大能到達的高度

每個狀態的轉移無非兩種

1.墊腳 dp[i]+=a[k].h;

2.吃掉 dp[i+a[k].f]=max(dp[i+a[k].f],dp[i]);

初始:dp[10]=0;

如果死了,就直接待在原地不動,一直吃,就可以得到最大時間.

需要注意的地方:

1.每個方塊dp完都要掃一次結果是否滿足,滿足直接退.

2.時間的上限從max(a[i].t)開始就行了,因為活得比最後乙個方塊下落時間還久沒啥意義(還不如墊腳)

1

//垃圾陷阱 (洛谷 no.1156)2//

揹包dp

3 #include4 #include5

using

namespace

std;

6const

int maxn=1100;7

const

int maxm=110;8

intdp[maxn];

9int

d,g;

10struct

node11;

14node a[maxm];

15bool

comp(node a,node b)

1619

intmain()

2028 sort(a+1,a+1+g,comp);

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

3036

for(int j=a[g].t+a[i].f;j>=a[i].t;j--)

3743}44

}45int f=10;46

for(int i=1;i<=g&&f>=a[i].t;i++)

4750 printf("

%d\n

",f);

51return0;

52 }

洛谷 P1156 垃圾陷阱

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

洛谷P1156 垃圾陷阱

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

洛谷P1156 垃圾陷阱

這個題是乙個類似揹包問題,垃圾的高度看成物重,能增加的生命的長短看成價值,把井的高度看成揹包的大小,但和揹包不同的是,題目要求至少將這個揹包填滿,需要對 進行以下修改 開乙個結構體 記錄 a i t,a i f,a i h分別代表第i個物體的投入時間,持續生命時間和高度。設b j 表示到達高度j時所...