dp訓練計畫 完全揹包板子題

2021-10-03 08:15:24 字數 1351 閱讀 4780

題目大意:

給你乙個罐子的承受重量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 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於...