1079 PIPI的存錢罐

2021-10-05 07:23:05 字數 1149 閱讀 6548

題目描述

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 ...