題目描述
pipi有n種硬幣,每種硬幣有特定的重量wei[i] 克和它對應的價值val[i].
已知有乙個承重量為m的存錢罐,當裡面正好裝著重量為m的硬幣時,問你這個存錢罐中硬幣的最小價值是多少? 如果不可能存在m克的情況, 那麼就輸出」impossible「
輸入
多組輸入。
第一行包括兩個整數n,m(1<=n<=500,1<=m<=10000)
接下來n行,每行兩個整數v,w,表示第i中硬幣的價值與重量。(1<=v<=10000,1<=w<=m)
輸出
輸出可能的最小價值,如果不可能存在m克的情況, 那麼就輸出」impossible「
樣例輸入
2 100
1 130 50
2 100
1 150 30
樣例輸出
60100
思路:完全揹包問題(最小揹包)
#include
#include
using
namespace std;
#define inf 1e9
/* 完全揹包問題(最小揹包)
明確了這個模型是完全揹包問題,我們再來確定初始狀態,dp陣列的初始狀態,dp[0]應該是0,dp[1-m]都inf,
原因是想用硬幣更新其值,不然就是乙個硬幣都沒有放入。(感覺模擬求乙個陣列的最小值比較好理解這裡的初始化inf的處理)
既然是求得最小價值,那麼狀態轉移方程應該是dp[j]=min(dp[j-c[i]+w[i],dp[j]);
*/const
int n =
1e4+5;
int dp[n]
;int
main()
int v[n+1]
,w[n+1]
;for
(int i=
1;i<=n;i++
)for
(int i=
1;i<=n;i++)}
if(dp[m]
== inf)
else
}return0;
}
1079 PIPI的存錢罐
這個問題的原型就是完全揹包問題模型,所不同的是完全揹包問題要求的是最大價值,而這個是最小價值 完全揹包問題的模型 是 for int i 1 i n i for int j c i j v j dp j max dp j c i w i dp j 明確了這個模型是完全揹包問題,我們再來確定初始狀態,...
小明的存錢計畫
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。為了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裡,到了年末她會加上20 還給小明。因此小...
小明的存錢計畫
小明的存錢計畫 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 小明的零花錢一直都是自己管理。每個月的月初媽媽給小明300元錢,小明會預算這個月的花銷,並且總能做到實際花銷和預算的相同。為了讓小明學習如何儲蓄,媽媽提出,小明可以隨時把整百的錢存在她那裡,到了年末她會加上20 ...