dp 完全揹包)

2022-06-09 09:33:12 字數 2035 閱讀 5585

有 n

'>n

n 種物品和乙個容量是 v

'>v

v 的揹包,每種物品都有無限件可用。

第 i'>i

i 種物品的體積是 v

i'>vi

vi,價值是 w

i'>wi

wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。

輸出最大價值。

輸入格式

第一行兩個整數,n,v

'>n,v

n,v,用空格隔開,分別表示物品種數和揹包容積。

接下來有 n

'>n

n 行,每行兩個整數 vi,

wi'>vi,wi

vi,wi,用空格隔開,分別表示第 i

'>i

i 種物品的體積和價值。

輸出格式

輸出乙個整數,表示最大價值。

資料範圍

0v≤1000

'>000,wi≤

1000

'>00輸入樣例

4 5

1 22 4

3 44 5

輸出樣例:
10

ac**1;

#includeusing

namespace

std;

typedef

long

long

ll;#define heap(...) priority_queue<__va_args__ >

#define heap(...) priority_queue<__va_args__,vector<__va_args__ >,greater<__va_args__ > >template

inline t min(t &x,const t &y)

template

inline t max(t &x,const t &y)

ll read()

#define read read()

const ll inf =1e18;

const

int maxn = 1e6 + 7

;const

int mod = 1e9 + 7

;const

int n = 1001

;int

v[n],w[n];

intdp[n];

intmain()

for(int i=1;i<=n;i++)

}printf("%d

",dp[m]);

return

0;

}

ac**2(簡化版)

#includeusing

namespace

std;

typedef

long

long

ll;#define heap(...) priority_queue<__va_args__ >

#define heap(...) priority_queue<__va_args__,vector<__va_args__ >,greater<__va_args__ > >template

inline t min(t &x,const t &y)

template

inline t max(t &x,const t &y)

ll read()

#define read read()

const ll inf =1e18;

const

int maxn = 1e6 + 7

;const

int mod = 1e9 + 7

;const

int n = 1001

;int

v[n],w[n];

intdp[n];

intmain()

for(int i=1;i<=n;i++)

}printf("%d

",dp[m]);

return

0;

}

完全揹包dp

完全揹包類似題目 不過求最小值 杭電1114 揹包九講 基本形式 有 n 種物品和乙個容量為 v 的揹包,每種物品都有無限件可用。放入第 i 種 物品的費用是 c i 價值是 w i 求解 將哪些物品裝入揹包,可使這些物品的耗 費的費用總和不超過揹包容量,且價值總和最大。基本思路 這個問題非常類似於...

DP完全揹包

written with stackedit.每件物品不限數量 轉化為0 1揹包 每個物體盡可能多放 why?遞推式為 f i j max,kw i wf i,j max forall kw i f i,j max kw i w其他思路和01揹包相同.檢查每乙個k不會造成越界的k.0 1揹包就是完全...

完全揹包 貪心 dp

考慮以下問題 有n nn種物品,第i ii種有z iz i zi 個,價值是y iy i yi 重量是w iw i wi 那麼把這些物品放入大小為x xx的揹包,的最大價值是多少 n,yi 50 wi,z i 10 9 n,y i leq 50 w i,z i leq 10 9 n,yi 50w i...