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時所...