題目大意:給你乙個罐子的承受重量v,然後給你n種金幣,每一種金幣有兩個屬性,價值c[i]和重量w[i],每一種金幣有無限個。
然後讓你判斷是否能用罐子裝重量為v的金幣,如果能,請輸出重量為v時金幣的最小價值。
題解:trick:注意陣列要開大點,不然會tle,記住是tle,具體原因和後台linux系統有關。
**實現:
#pragma gcc optimize(2)
#include#include#include#include#include#include#include#include#include#include#include#define pi atan(1.0)*4
#define e 2.718281828
#define rp(i,s,t) for (register int i = (s); i <= (t); i++)
#define rp(i,t,s) for (register int i = (t); i >= (s); i--)
#define ll long long
#define ull unsigned long long
#define mst(a,b) memset(a,b,sizeof(a))
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define pii pair#define mp make_pair
#define pb push_back
#define debug printf("ac\n");
using namespace std;
inline int read()
while(c>='0'&&c<='9')
return a*b;
}const int inf = 0x3f3f3f3f;
const int n = 1e4+7;
int c[n],w[n];
int dp[n];
int main()
rp(i,1,n)
rp(j,w[i],v)
dp[j]=min(dp[j-w[i]]+c[i],dp[j]);
if(dp[v]!=inf) printf("the minimum amount of money in the piggy-bank is %d.\n",dp[v]);
else printf("this is impossible.\n");
}return 0;}/*
1 73
3 36 6
2 2
*/
dp 完全揹包(題)
理解了這道題 我感覺對揹包又有了乙個更深的認識 hdu 2159 最近xhd正在玩一款叫做fate的遊戲,為了得到極品裝備,xhd在不停的殺怪做任務。久而久之xhd開始對殺怪產生的厭惡感,但又不得不通過殺怪來公升完這最後一級。現在的問題是,xhd昇掉最後一級還需n的經驗值,xhd還留有m的忍耐度,每...
01揹包 多重揹包 完全揹包板子
給你n種不同的物品,每個物品有自己的重量w i 和價值v i 如果每個物品只能拿一次,給你容量為m的揹包,怎樣才能取得最大價值?狀態轉移方程 dp j max 基本操作 for i 0 i for j m j w i j 01是從最大到當前 dp j max dp j dp j w i v i dp...
完全揹包dp
完全揹包類似題目 不過求最小值 杭電1114 揹包九講 基本形式 有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種 物品的費用是 c i 價值是 w i 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於...