題目背景
現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。
題目描述
現在absi2011拿出了x個迷你裝藥物(嗑藥打人可恥….),準備開始與那些人打了
由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,沒到達最少打敗該人所用的屬性藥了他打人必輸》.《所以他用2個藥去打別人,別人卻表明3個藥才能打過,那麼相當於你輸了並且這兩個屬性藥浪費了。
現在有n個好友,有輸掉拿的經驗、贏了拿的經驗、要嗑幾個藥才能打過。求出最大經驗(注意,最後要乘以5)
輸入格式
第一行兩個數,n和x
後面n行每行三個數,分別表示輸了拿到的經驗(lose[i])、贏了拿到的經驗(win[i])、打過要至少使用的藥數量(use[i])。
輸出格式
乙個整數,最多獲得的經驗
輸入輸出樣例
輸入 #1
6 821 52 1
21 70 5
21 48 2
14 38 3
14 36 1
14 36 2
輸出 #1
這道題是一道類揹包問題,需要注意一點:在嗑藥後還打不過盆友的情況下,可以獲得lose的經驗,這點和01揹包問題不同。
#include
#include
using
namespace std;
long
long dp[
1001][
1001
], win[
1001
], lose[
1001
], use[
1001];
intmain()
cout << dp[n]
[x]*5;
return0;
}
每日dp理解(04) 類01揹包問題(裝箱問題)
先來說說什麼是01揹包吧,揹包是你存放貨物的容器,而01描述了貨物只能拿一次的性質。在用動態規劃解決本類問題時,首先要明確狀態 當前的貨物是否要裝入揹包。這就引出了dp陣列的含義。狀態方程則是由為了要使裝入揹包貨物的價值盡可大,在每次有可能裝入乙個貨物時,要比較揹包當前的價值,和裝入貨物後的最大價值...
揹包dp之01揹包
現在我們有n個配件,他們有不同的價值.但是我們揹包的容量是有限的,因為我們只有乙個一級包,所以我們最多可以裝v重量的東西.但是為了能更好的吃到雞 不存在的 我們要攜帶更有價值的配件,請問我們最多能拿多少價值的配件來當快遞員呢?輸入的第一行是t,表示有一共要打t場比賽.每組資料由三行組成.第一行包含兩...
揹包dp之01揹包變形
一種雙核cpu的兩個核能夠同時的處理任務,現在有n個已知資料量的任務需要交給cpu處理,假設已知cpu的每個核1秒可以處理1kb,每個核同時只能處理一項任務。n個任務可以按照任意順序放入cpu進行處理,現在需要設計乙個方案讓cpu處理完這批任務所需的時間最少,求這個最小的時間。輸入描述 輸入包括兩行...