計蒜客刷題之旅 之 草藥的價值

2021-08-15 10:07:55 字數 1210 閱讀 3907

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

輸入資料的第一行有兩個整數t(1 < = t < = 1000)和m(1 < = m < = 100),用乙個空格隔開,t代表總共能夠用來採藥的時間,m代表山洞裡的草藥的數目。接下來的m行每行包括兩個在1到100之間(包括1和100)的整數,分別表示採摘某株草藥的時間和這株草藥的價值。

輸出包括一行,這一行只包含乙個整數,表示在規定的時間內,可以採到的草藥的最大總價值。

對於30%的資料,m < = 10;對於全部的資料,m < = 100。

樣例輸入

70 3

71 100

69 1

1 2

樣例輸出

3本題難度只有一星,可以算作揹包問題的入門練手題。

#include 

using

namespace

std;

#define weight 0

#define value 1

int main()

//輸入藥草資訊

for(int i=0; icin >> medicine[i][weight] >> medicine[i][value];

//處理資料

for(int j=0; jfor(int i=weightlimit; i>0; i--)

//所採集的草藥的價值要盡可能多,所以此處使用三目運算子給maxvalue賦較大的乙個值

if (i-medicine[j][weight] >= 0 )

maxvalue[i] = maxvalue[i]>(maxvalue[i-medicine[j][weight]]+medicine[j][value])?\

maxvalue[i]:(maxvalue[i-medicine[j][weight]]+medicine[j][value]);

//輸出結果

cout

<< maxvalue[weightlimit];

return

0;}

我的計蒜客刷題之旅(二)

emmm 今天就不說那麼多廢話了,不然感覺都沒時間來敲 了qaq,直接貼 片了 一 最後乙個單詞的長度 就是從最後乙個字母數起,到遇到第乙個空格時停止。include include int main printf d n count return 0 二 整數轉換成羅馬數字 喵,小姐姐很無奈,不是...

計蒜客刷題 1

1.資料範圍 相信你已經學會 a ba b 問題了,那麼問題又來了 輸入兩個正整數 aa 和 bb 求a b。輸入格式 一行,包含兩個正整數 a 和 b,中間用單個空格隔開。1 a,b 50000。輸出格式 乙個整數,即a b 的值。include using namespace std intma...

計蒜客刷題之旅 之 計數和數數

伯爵說 序列如下 1,11,21,1211,111221,ldots1,11,21,1211,111221,其1讀作one 1或者11。11讀作two 1s或者21。21讀作one 2,one 1或者1211。輸入格式 多組輸入,讀到檔案結束。每組輸入給定乙個整數 n 1 leq n leq 30 ...