混合揹包問題(01 完全 多重揹包二進位制優化)

2021-10-03 03:16:24 字數 995 閱讀 2353

題意:給n件物品和乙個容積為v的揹包,有些物品只可以拿一次,有些物品可以無限拿,有些物品可拿規定的次數,問你在揹包容量內,可獲得最大的價值是多少。

思路:把不同的物品種類分開處理即可。注意多重揹包應該使用二進位制優化與01揹包視為同類處理,否則tle

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+5;

const

int mod=

1e9+7;

const

int inf=

0x7fffffff

;const ll llinf=

0x7fffffffffffffff

;const

double eps=

1e-10

;#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#define pb push_back

#define pii pair

#define pll pair

#define debug cout<<"debug"<#define ls p<<1

#define rs p<<1|1

//#define int long long

struct node

a[n]

;int dp[n]

;signed

main()

else

a[++cnt]

.w=w*s;

a[cnt]

.v=v*s;

a[cnt]

.s=-1;

}}for(

int i=

1;i<=cnt;i++)}

else}}

cout<;}

0 1 完全揹包 多重揹包問題 混合揹包

0 1揹包問題 dp i j 表示前i件物品,體積容量為j的揹包所能獲得的最大價值 決策是第i個物品選不選 轉移方程 dp i j max dp i 1 j dp i 1 j v i w i n為物品數量,m為揹包體積 for int i 1 i n i for int j 0 j m j if j...

揹包問題 01揹包 完全揹包 多重揹包

01揹包和完全揹包的區別 01揹包的侷限在於每樣物品只有一種,每個物品都有乙個屬於自己的價值和重量,在給定的物品中選出揹包所能容納的最大重量,要求是價值最大 完全揹包與01揹包的不同在於完全揹包不限制每樣物品的個數,物品的價值和質量都與01揹包一樣,也同樣是求在給定大小的容量中,找出最大價值的選擇 ...

揹包問題(01揹包,完全揹包,多重揹包)

揹包問題 01揹包,完全揹包,多重揹包 近日為以下瑣事煩身 差不多要向學院提交專案申請了,本來是想做個多模式的im系統的,可是跟往屆通過審核的專案比起來,缺乏創新和研究價值,所以在文件上要多做手腳,花點心思。揹包問題,經典有揹包九講。不死族的巫妖王發工資拉,死亡騎士拿到一張n元的鈔票 記住,只有一張...