每日dp理解(05) 繼續01揹包,5倍經驗日

2021-10-09 16:56:44 字數 964 閱讀 9595

題目背景

現在樂鬥有活動了!每打乙個人可以獲得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處理完這批任務所需的時間最少,求這個最小的時間。輸入描述 輸入包括兩行...