垃圾陷阱 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 時,奶牛處於瀕死狀態,還可...