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