动态规划-背包基础专题

14人阅读 评论(0) 收藏 举报
分类:

一、背包问题

1.01背包

1.1  二维01背包  

http://xyoj.xynu.edu.cn/problem.php?id=1416

//t[i]->代价  time->可承受最高代价  p[i]->需求
for( int i=0 ; i<n ; i++ ){
	for( int j=time ; j>=t[i] ; j-- ){
		dp[j] = max( dp[j],dp[j-t[i]]+p[i] );
	}
}

1.2  二维01背包(双重代价)

http://xyoj.xynu.edu.cn/problem.php?id=1418

//v[i]->代价1  V->可承受最高代价1  
//m[i]->代价2  M->可承受最高代价2 
//P[i]->需求
for( int i=0 ; i<n ; i++ ){
	for( int j=V ; j>=v[i] ; j-- ){
		for( int k=M ; k>=m[i] ; k-- ){
			dp[j][k] = max( dp[j][k],dp[j-v[i]][k-m[i]]+p[i] );
		}
	}
}

2.完全背包

2.1  二维完全背包

http://xyoj.xynu.edu.cn/problem.php?id=1441

//w[i]->代价 v->可承受最高代价 
for( int i=0 ; i<n ; i++ ){
	for( int j=w[i] ; j<=v ; j++ ){
		dp[j] = max( dp[j],dp[j-w[i]]+c[i] );
	}
}

3.分组背包

http://xyoj.xynu.edu.cn/problem.php?id=1430

//g[i]->每个物品的组号  T->组号  M->可承受最高代价  w[i]->代价  
//v[i]->价值 
for( int k=1 ; k<=T ; k++ ){
	for( int j=M ; j>=0 ; j-- ){
		for( int i=0 ; i<n ; i++ ){
			if( w[i]<=j && g[i]==k ){
				dp[j] = max( dp[j],dp[j-w[i]]+v[i] );
}
		}
	}
}

4.多重背包

http://xyoj.xynu.edu.cn/problem.php?id=1428

//p[i]->物品的件数  v[i]->价值  m[i]->代价  M->可承受最高代价
for( int i=0 ; i<n ; i++ ) {
	for( int k=1 ; k<=p[i] ; k++ ) {
		for( int j=M ; j>=k*m[i] ; j-- ) {
			dp[j] = max( dp[j],dp[j-m[i]]+v[i] );
		}
	}
}

5.混合背包(01,完全,多重)

http://xyoj.xynu.edu.cn/problem.php?id=1435

//p[i]->物品数量(0完全,1零一,其余多重)
//w[i]->代价 M->可承受最高代价 
for( int i=0 ; i<n ; i++ ){
	if( p[i]==1 ){  //01背包 
		for( int j=M ; j>=w[i] ; j-- ){
			dp[j] = max( dp[j],dp[j-w[i]]+v[i] );
		}
	}else if( p[i]==0 ){  //完全背包 
		for( int j=w[i] ; j<=M ; j++ ){
			dp[j] = max( dp[j],dp[j-w[i]]+v[i] );
		}
	}else {  //多重背包 
		for( int k=1 ; k<=p[i] ; k++ ){
			for( int j=M ; j>=w[i] ; j-- ){
				dp[j] = max( dp[j],dp[j-w[i]]+v[i] );
			}
		}
	}
}
持续添加中~~~
查看评论

【背包专题汇总】

菜鸟要开始写一个背包系列的博客了,会有持续更新哦,欢迎个位大牛指正~ 【01背包】 1.问题描述: 有 N 件物品和一个容量为 V 的背包。放入第 i 件物品耗费的费用是 Ci,得到的价值是Wi。...
  • qq_27601815
  • qq_27601815
  • 2016-05-23 13:31:34
  • 567

动态规划之:让你轻松理解背包算法

动态规划之:背包算法最简单的理解 1.常用的算法设计技术:贪心算法,分治和动态规划。 贪心:寻找局部最优,代替全局最优。比如说不带权的区间调...
  • A784586
  • A784586
  • 2017-03-19 00:01:40
  • 3044

动态规划01背包与完全背包的C语言实现

01背包是基础的背包问题,即容量为v的背包, 给你n件物品, 每件物品只有一件, 每件物品所占体积vi, 价值wi已知,求此背包所能容纳的前提下,让在其中物品价值最大。 此问题状态方程为发f[i][v...
  • shadowam
  • shadowam
  • 2017-02-10 11:17:05
  • 1313

背包问题九讲.doc

  • 2016年07月10日 14:33
  • 93KB
  • 下载

[算法]动态规划之0-1背包

问题描述描述:石头收藏家小明在徒步登山的时候发现了一堆美丽的石头。这些石头价值不菲,但是都很重,小明自身的力气有限,一次只能拿他拿得动的一部分。每块石头的重量不同,价值也不同。问小明在力所能及的情况下...
  • kiss_the_sun
  • kiss_the_sun
  • 2017-02-08 17:12:44
  • 465

【动态规划】三种基本背包问题

动态规划 是对解最优化问题的一种途径 它往往是针对一种最优化问题 根据问题的不同性质 确定不同的设计方法 因为这篇文章我想说点关于背包问题的事情 所以不再过多介绍动态规划 背包问题 是动态规划...
  • qq_36303472
  • qq_36303472
  • 2017-03-31 21:35:54
  • 4650

0-1背包的动态规划算法,部分背包的贪心算法和DP算法。

  • 2015年01月14日 00:19
  • 3KB
  • 下载

014-背包问题-动态规划-《算法设计技巧与分析》M.H.A学习笔记

01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2……Wn,与之相对应的价值为P1,P2……Pn。求能获得的最大总价值。...
  • qq_18738333
  • qq_18738333
  • 2016-06-28 12:18:21
  • 2194

GF-动态规划dp-多维费用的背包

题目地址:https://vijos.org/p/1544 题目描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕.....
  • ly59782
  • ly59782
  • 2016-07-27 13:06:17
  • 506

【Algothrim】动态规划之背包九讲

 背包九讲 前言 本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较为完善的NOIP难度的动态规划总结,名为《解动态规划题的基本...
  • carol123456
  • carol123456
  • 2016-08-08 20:18:14
  • 1674
    个人资料
    等级:
    访问量: 4662
    积分: 294
    排名: 26万+