背包问题模板

原创 2015年02月12日 23:13:20

算法源于《背包九讲》

下面是实现代码:

#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;
}


ACM_模板_背包问题

背包问题是属于动态规划中的一种非常经典的运用,小编在这里大力推荐dd_engi的背包九讲,这种超级详细的讲解在小编心中是可以得到诺贝尔文学奖的~ 1.01背包 首先是最基础的01背包问题,所有元素只能...
  • RaAlGhul
  • RaAlGhul
  • 2016年03月01日 12:58
  • 1106

01背包模板、完全背包 and 多重背包(模板)

01背包模板、完全背包 and 多重背包(模板)
  • u012860063
  • u012860063
  • 2014年06月21日 09:41
  • 3234

【动态规划】常见背包问题合集

01背包:  有N件物品和一个容量为V的背包。(每件物品只有一件)第i件物品的费用是c[i],价值是v[i],求解将哪些物品装入背包使总价值最大。 转移方程:f[i][v]=max{f[i-1][v]...
  • Hemk340200600
  • Hemk340200600
  • 2017年03月20日 23:14
  • 465

背包问题总结篇

1.混合了贪心思想的背包入门 nefu1028暑假计划 01背包 给定工作开始时间、完成时间、给的工资,工作不能重叠,求最大收益。 一维Dp表示截止到当前时间的最大收益,但是事先要对结构体按结束时间...
  • zhou_yujia
  • zhou_yujia
  • 2016年05月24日 14:59
  • 4672

完全背包-背包问题程序源代码(pascal)

var n,t,i,j,k:longint; f:array[0..1000,0..1000] of longint; w,v:array[0..100...
  • qq_35593457
  • qq_35593457
  • 2016年07月19日 15:24
  • 903

0-1背包问题回溯法C++代码

 /*给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?*/#include using namespace std;...
  • tianshuwelcome
  • tianshuwelcome
  • 2011年06月29日 12:34
  • 1318

背包问题_模板

背包总结 int dp[M];    // dp[i][k] : 第i分组中 消耗为k时 的最优价值   int n[50+10]; // 每种的个数   int v[50+10]; // 每种...
  • hengfanz
  • hengfanz
  • 2015年03月14日 09:22
  • 259

多重背包O(N*V)算法详解(使用单调队列)

多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*...
  • flyinghearts
  • flyinghearts
  • 2010年09月20日 23:41
  • 12501

粒子群算法总结+背包问题

【粒子群算法】(Particle Swarm Opitimization, PSO)在1995年由Dr.Eberhart和Dr.Kennedy提出,源于对鸟群捕食行为的研究。 好比说,一群鸟在一个区域...
  • pinpinjiusha388
  • pinpinjiusha388
  • 2017年07月21日 16:20
  • 280

背包问题解题思路

背包解题思路 背包问题大部分都是类似模样的状态转移方程dp[j]=dp[j]>(dp[j-t]+v)?dp[j]:(dp[j-t]+v); 普通类型的背包问题只需注意以下情况: 一、对于物品数量: 1...
  • zhulingyan1018
  • zhulingyan1018
  • 2015年10月18日 17:41
  • 1197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:背包问题模板
举报原因:
原因补充:

(最多只允许输入30个字)