問題描述
何老闆要給大家買節日禮物,他有m元錢,學校小賣部有n種禮品,因為店長和何老闆是熟人,所以若第i種禮品買x(x>0)件的話,店長會給何老闆ai*x+bi顆糖果。
因為何老闆非常喜歡吃糖,所以他希望獲得的糖果越多越好。現給出每種禮品的單價wi、ai值與bi值,問何老闆最多能得到多少顆糖果?
輸入格式
第一行,兩個空格間隔的整數m和n
接下來n行,每行三個整數wi, ai 和 bi,描述一種禮物的情況。
輸出格式
一行,乙個整數,表示何老闆能得到的最大糖果數
樣例輸入
100 2
10 2 1
20 1 1
樣例輸出
提示
樣例說明,何老闆買了10個1號禮物,獲得 2 × 10 + 1 = 21顆糖
1 ≤ m ≤ 2000
1 ≤ n ≤ 1000
0 ≤ ai, bi ≤ 2000
1 ≤ wi ≤ 2000
/*
狀態:f[j]表示當用了j錢時所得到的最大糖果數
方程:1.完全揹包: f[j] = max(f[j], f[j - w[i]] + a[i]);
2.01揹包: f[j] = max(f[j], f[j - w[i]] + a[i] + b[i]);
邊界:1 <= i <= n;
完全揹包:w[i] <= j <= m;
01揹包:m >= j >= w[i];
總結:1.要善於把一般的揹包問題轉化成揹包模型
*/#include using namespace std;
int w[2000 + 5] = ;
int a[2000 + 5] = ;
int b[2000 + 5] = ;
int f[2000 + 5] = ;
int main()
for(int i = 1; i <= n; i++)
for(int j = w[i]; j <= m; j++) }
printf("%d", f[m]);
return 0;
}
nkoi P3793 禮物和糖果
何老闆要給大家買節日禮物,他有m元錢,學校小賣部有n種禮品,因為店長和何老闆是熟人,所以若第i種禮品買x x 0 件的話,店長會給何老闆ai x bi顆糖果。因為何老闆非常喜歡吃糖,所以他希望獲得的糖果越多越好。現給出每種禮品的單價wi ai值與bi值,問何老闆最多能得到多少顆糖果?輸入格式 第一行...
P3793禮物和糖果
問題描述 何老闆要給大家買節日禮物,他有m元錢,學校小賣部有n種禮品,因為店長和何老闆是熟人,所以若第i種禮品買x x 0 件的話,店長會給何老闆ai x bi顆糖果。因為何老闆非常喜歡吃糖,所以他希望獲得的糖果越多越好。現給出每種禮品的單價wi ai值與bi值,問何老闆最多能得到多少顆糖果?輸入格...
歐姆諾姆和糖果
一天,歐姆諾諾姆來到了朋友家裡,他發現了許多糖果。有藍色和紅色兩種。他知道每顆紅色糖果重wr克,每顆藍色糖果重wb克。吃一顆藍色糖果會給他帶來hb的歡樂值,吃一顆紅色糖果會給他帶來hr的歡樂值。歐姆諾姆最多只能吃c克的糖果,而且每一顆糖果不能只吃一半。現在他想通過吃藍色和紅色的糖果來獲得最大的歡樂值...