01揹包思想的採藥問題

2021-10-24 11:16:18 字數 1088 閱讀 9329

辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說:「孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡,你可以採到一些草藥。如果你是乙個聰明的孩子,你應該可以讓採到的草藥的總價值最大。」

如果你是辰辰,你能完成這個任務嗎?

第一行有 2個整數 1≤t≤1000)和 m(1≤m≤100),用乙個空格隔開,t代表總共能夠用來採藥的時間,m 代表山洞裡的草藥的數目。

接下來的 m行每行包括兩個在 1 到 100 之間(包括 1 和 100)的整數,分別表示採摘某株草藥的時間和這株草藥的價值。

輸出在規定的時間內可以採到的草藥的最大總價值。

輸入 #1

70 3

71 100

69 1

1 2

輸出 #1

3
這道題就是乙個01揹包問題,只不過換了一種描述情景,所以不用說,直接動態規劃就好

maxv[i][j]表示前i種草藥在時間j內能得到的最大價值,時間允許採當前的藥,就考慮採與不採哪個價值高

所以狀態轉移方程就是maxv[i][j]=max(maxv[i-1][j],maxv[i-1][j-t[i]]+v[i])

目標狀態就是maxv[m][n],m是草藥數,n是最大時間

#include

using

namespace std;

int maxv[

1000][

1000];

//maxv[i][j]表示前 i種草藥在時間 j內能得到的最大價值

intmain()

else

maxv[i]

[j]=maxv[i-1]

[j];}}

cout<[n];

return0;

}

採藥 01揹包問題

辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡,你可以採...

採藥 01揹包

from silence 採藥 背景 background noip2005複賽普及組第三題 描述 description 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說...

採藥(0 1揹包)

題目描述 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡...