背包问题模板
2015-02-12 23:13
183 查看
算法源于《背包九讲》
下面是实现代码:
下面是实现代码:
#include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> #include<algorithm> #include<sstream> #include<vector> #include<map> #include<stack> #include<list> #include<set> #include<queue> #define LL long long #define lson l,m,rt<<1 #define rson m+1,r,rt<<1 | 1 using namespace std; const int maxn=100005; int w[maxn],v[maxn],num[maxn];//代价数组和价值数组,以及相应的物品最大件数 int W,n;//背包容量和物品件数 int dp[maxn];//背包更新数组 void ZeroOnePack(int weight,int value)//0-1背包 { for(int i=W;i>=weight;i--) dp[i]=max(dp[i],dp[i-weight]+value); } void CompletePack(int weight,int value)//完全背包 { for(int i=weight;i<=W;i++) dp[i]=max(dp[i],dp[i-weight]+value); } void MultiplePack(int weight,int value,int cnt)//多重背包 { if(weight*cnt>=W) CompletePack(weight,value); else { for(int k=1;k<cnt;k<<=1) ZeroOnePack(k*weight,k*value),cnt-=k; ZeroOnePack(cnt*weight,cnt*value); } } int main() { //读入数据 return 0; }
相关文章推荐
- 多重背包问题(含模板)
- 模板①:背包问题(0-1背包&完全背包&多重背包)
- 背包问题模板(01背包,完全背包,多重背包)
- HDU 1114 Piggy-Bank(完全背包问题)【完全背包--刚好装满 模板】
- 背包问题模板
- 部分背包问题模板
- Python基于回溯法子集树模板解决0-1背包问题实例
- 背包问题_模板
- 背包问题模板
- POJ 1014 Dividing (多重背包问题+递归)【模板】
- 背包问题_模板
- 多重背包模板+可达可不达问题模板(2844)
- 背包问题标准模板
- 背包问题模板
- 背包问题模板,POJ(1014)
- 背包九讲问题的模板
- nyoj106背包问题为模板解出杭电oj2187悼念512汶川大地震遇难同胞——老人是真饿了
- 背包问题模板
- 总结——背包问题解析及模板代码
- 算法模板之01背包问题