題意:
取款機的問題;
有 n 種錢;
每種錢有 v[i] 的價值;
每種錢有 w[i] 張;
問給定要取得錢 cash 之後能從取款機最多取多少錢;
理解:多重揹包;
直接套模板;
遞推式:dp[i] = max(dp[i], dp[i - mul * v[i]] + mul * v[i]);
其中的值根據**定義;
**如下:
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
typedef pairpii;
const int min_inf = 1e-7;
const int max_inf = (1e9) + 7;
#define x first
#define y second
int dp[222222];
int v[111], w[111];
int main()
memset(dp, 0, sizeof(dp));
for (int i = 0; i < n; ++i)
num -= k;}}
cout << dp[cash] << endl;
}return 0;
}
POJ1276 多重揹包
說到揹包問題,都少不了網上很出名的揹包九講。我也是看了那個以後才知道怎麼做的。多重揹包 就是在0 1揹包的基礎上,有的物品可能有多個,問你怎麼選才能使總價值最大。我們最容易想到的是把相同的物品分開,比如說有n個a1物品 就將它分成 a1 a2 a3 an 然後再用01揹包的方法去解決。不過在此題中,...
POJ 1276 多重揹包問題
題目在 題目大意是說,我現在要從atm中取錢,m atm裡面有若干種貨幣,每一種都有對應的貨幣面額和張數。問現在atm能夠取出來的 小於等於m的最大金額。若將m理解為揹包重量,而每種貨幣的面額理解成 value,貨幣的面額同樣理解成重量,那麼這個問題就是乙個多重揹包問題。多重揹包問題可以轉換成完全揹...
dp之多重揹包poj1276
題意 有現今cash,和n種錢幣,每種錢幣有ni個,價值為di,求各種錢幣組成的不超過cash的最大錢數.思路 二進位制拆分轉化為01揹包,或者轉化為完全揹包都是可以的。反思 這個題目我wa兩次,是應為我把判斷cash 0 n 0放得太前,以致於後面的資料木有輸入 wa include includ...