洛谷 P1802 5倍經驗日

2022-08-19 23:33:10 字數 1286 閱讀 3726

現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。

現在absi2011拿出了x個迷你裝藥物(嗑藥打人可恥….),準備開始與那些人打了

由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,沒到達最少打敗該人所用的屬性藥了他打人必輸》.《所以他用2個藥去打別人,別人卻表明3個藥才能打過,那麼相當於你輸了並且這兩個屬性藥浪費了。

現在有n個好友,有輸掉拿的經驗、贏了拿的經驗、要嗑幾個藥才能打過。求出最大經驗(注意,最後要乘以5)

第一行兩個數,n和x

後面n行每行三個數,分別表示輸了拿到的經驗(lose[i])、贏了拿到的經驗(win[i])、打過要至少使用的藥數量(use[i])。

乙個整數,最多獲得的經驗

輸入 #1複製

6 8

21 52 1

21 70 5

21 48 2

14 38 3

14 36 1

14 36 2

輸出 #1複製

1060
【hint】

五倍經驗活動的時候,absi2011總是吃體力藥水而不是這種屬性藥》.<

【資料範圍】

對於10%的資料,保證x=0

對於30%的資料,保證n<=10,x<=20

對於60%的資料,保證n<=100,x<=100, 10<=lose[i], win[i]<=100,use[i]<=5

對於100%的資料,保證n<=1000,x<=1000,0【題目**】

fight.pet.qq.com

absi2011授權題目

思路:簡單的01揹包,分2種狀態,就有2個狀態轉移方程,dp[i][j] = max(dp[i-1][j]+lose[i],dp[i-1][j-use[i]]+win[i])(j>=use[i]), dp[i][j] = dp[i-1][j] + lose[i] (j < use[i]),注意在j>=use[i]的時候若不打贏則應貪心選擇一瓶藥不磕

typedef long

long

ll;const

int maxm = 1005

;ll lose[maxm], win[maxm], use[maxm], dp[maxm];

intmain()

for(int i = 1; i <= n; ++i)

cout

<< dp[x] <

return0;

}

view code

洛谷P1802 5倍經驗日

現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。現在absi2011拿出了x個迷你裝藥物 嗑藥打人可恥 準備開始與那些人打了 由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,沒到達最...

P1802 5倍經驗日

01揹包問題變形 將狀態轉移矩陣改為1維的時候,出現問題 錯 includeusing namespace std define ll long long const int n 1010 int win n lose n use n int f n int n,x int main cout ll...

P1802 5倍經驗日 題解

傳送門 現在樂鬥有活動了!每打乙個人可以獲得5倍經驗!absi2011卻無奈的看著那一些比他等級高的好友,想著能否把他們乾掉。乾掉能拿不少經驗的。現在absi2011拿出了x個迷你裝藥物 嗑藥打人可恥 準備開始與那些人打了 由於迷你裝乙個只能管一次,所以absi2011要謹慎的使用這些藥,悲劇的是,...