当前位置: 首页 > 编程日记 > 正文

浅说——九讲背包之01背包

所谓九讲,也就是:

0/1背包

0/1背包降维

完全背包

多重背包(二进制优化)

混合背包

二维费用背包

分组背包

有依赖的背包

背包的方案总数\背包的具体方案路径

0/1背包:

[问题描述](经典)
有一个吝啬的地主,不愿意给工人付工钱,就从家里的物品中取出N个,对工人说, 你可以从这些物品中任意挑选,只要你的口袋装得下。
现在已知物品的总数量N,和工人的口袋大小M,及每种物品所占的空间wi,物品的价值vi。求出该背包能装载的最大价值。(物品不可以分,不考虑物品间的缝隙)
输入:
2    8
8    6
3    4 
5    4
3    3
输出:
16
有人说贪心 不就对了,是啊,当然不对。
贪心:先选单位空间能获得价值更大者
2:8
3:4
3:3
15
正确选择:
2 8
3 4
5 4
16
懂?
当然用深搜的dalao我就不说了,这明显是01背包嘛。
第一步:状态设想

总问题:N个物品,占用M个空间时所能获得的最大价值。

子问题:f[i,j] :前i个物品占用j个空间时能获得的最大价值。(背包惯用定义方式)

第二步:初步规划动规方程

从某个中间状态思考来源

F[i][j]=……….设前面的任何决策都有答案了,当前决策?(来源法)

因为只有选和不选两种方案,所以f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]);(若不选,及前i-1个物品占j个空间的最大价值,f[i-1][j],

                                                                                                          若选,及前i-1个物品占j-w[i]个空间的最大价值,f[i-1][j-w[i]]

第三步:打表  验证、确定动规方程

转载于:https://www.cnblogs.com/mzyczly/p/11174542.html

相关文章:

msvcrt.lib和LIBCD.lib链接冲突

今天在移植一个开源代码到windows的VC6工程,编译时出现了这些奇怪的LINK错误。 msvcrt.lib(MSVCRT.dll) : error LNK2005: _toupper already defined in LIBCD.lib(toupper.obj)msvcrt.lib(MSVCRT.dll) : error LNK2005: _tolower already defined in LIBCD.lib(to…

Oracle 小知识点

-- 表create table test (names varchar2(12),dates date,num int,dou double);-- 视图create or replace view vi_test asselect * from test;-- 同义词create or replace synonym aafor dbusrcard001.aa;-- 存储过程create or replace produce dd(v_id in employee.empoy…

CC2540获取本机MAC地址

//获取自身蓝牙地址void GetOwnAddr(void){ static uint8 ownAddress[6] {0}; ownAddress[5] XREG(0x780E); ownAddress[4] XREG(0x780F); ownAddress[3] XREG(0x7810); ownAddress[2] XREG(0x7811); ownAddress[1] XREG(0x7812); ownAddress[0] XREG(0x7813);}转载于:h…

mysql的小练习

建立如下表: 建表语句: class表创建语句 create table class(cid int not null auto_increment primary key, caption varchar(32) not null)engineinnodb default charsetutf8;student表创建语句 create table student(-> sid int not null auto_inc…

针对 Windows Phone 7 上的独立存储的 Sterling

http://msdn.microsoft.com/zh-cn/magazine/hh205658.aspx转载于:https://www.cnblogs.com/thankchunzi/archive/2011/11/18/2254416.html

【Linux】Linux简单操作之文件管理

1、mkdir : 创建文件夹 2、rm : 删除文件或目录 注: 凡是涉及到路径,绝对路径相对路径都可以 (1)直接使用 rm 文件名可以删除文件,但删除不了文件夹 (2)删除时会有一行提示 如果…

phpmyadmin另类拿shell

发现了个PHPMYADMIN 结果弱口令登陆进去 爆出绝对路径 然后执行SQL语句发现导出SHELL的时候却发现缺少了import.php这个文件 结果没办法执行MYSQL语句! 然后本地测试了下 发现另外的方法phpMyAdmin/sql.php?dbtest&tablea&printview1&sql_queryselect%…

第二章、IP协议详解

一、IP服务的的特点 IP协议是TCP/IP协议族的动力,他为上层协议提供的无状态无连接,不可靠的服务。 无状态是指IP通信双方不同步传输数据的状态信息,因此所有的ip数据报的发送,传出和接受都是相互独立的,没有上下文的联…

为绑定的NSArrayController设置默认的排序

当NSArrayController与一个class或者entity进行绑定(Binding)之后,可以为这个NSArrayController设置默认的排序。通过在Bindings Insepector中选择Controller Content Parameters -> Sort Descriptor进行默认排序的设定。 1、在.h文件中创…

快速求斯特林数总结(洛谷模板题解)

题目链接 第一类斯特林数行第一类斯特林数列第二类斯特林数行第二类斯特林数列 求一行第一类斯特林数 由第一类斯特林数的推论,\(x^{\overline{n}}\sum_i\begin{bmatrix}n\\i\end{bmatrix}x^i\),分治FFT计算上升幂即可 \(O(nlog^2n)\)。 求一列第一类斯特…

【Linux】Linux简单操作之系统管理

1、date : 显示系统时间 注 :系统操作与所在的文件夹无关,在哪都能操作。 2、su : 切换账号 注: (1)如果高级用户切换低级用户可以直接切换,不用密码 (2)…

嵌入式开发博客收藏

http://hbhuanggang.cublog.cn 嵌入式linux之我行 http://blog.csdn.net/fudan_abc fudan_abc的Linux内核专栏 http://blog.chinaunix.net/space.php?uid20543672

【Python3.6+Django2.0+Xadmin2.0系列教程之一(入门篇-上)】环境搭建及项目创建

由于工作需要,接触了大半年时间的Djangoxadmin框架,一直没空对这块对进行相关的梳理。最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧。 好了,话不多说,下面开始进入正题: 转载请注明出处&#xf…

JavaScript深拷贝Json

今天因为项目需要写了个Json格式的深拷贝(深度复制)。很简单,没有做其他的判断,代码如下: function deepCopy(json){if(typeof json number || typeof json string || typeof json boolean){return json;}else if(t…

【Linux】Linux简单操作之压缩解压

一、tar : 归档 格式:tar 参数(必须有) 要被压缩的文件或目录 1、创建归档文件 格式: tar -zvcf 归档文件名 要归档文件列表 注意: (1)z是压缩 v是显示详细信息 c是创建压缩文件…

Firefox 的User Agent 将移除 CPU 架构信息

Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的“数字指纹”。Web 浏览器会自动向用户在应用程序中打开的网站显示信息,而用户代理会显示有关浏览器和浏览器版本、操…

工程师必读 微软如何部署Exchange2010

一年一度的IT技术盛典——微软TechEd2010大会将于2010年12月1日正式开幕。为了更好地为网友和读者报道今年的大会,我们IT168前方的记者在TechEd会场,为读者带来第一时间的报道。 在今天的大会现场,来自微软的高级顾问陈刘项为我们全面介绍了关…

线程范围内的数据共享

1、如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做。 2、如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有如下两种方…

Setting the Reply-To Header in an Email using CDONTS.NewMail Object and CDO Message

代码 1 <%2 OptionExplicit3 4 DimobjMail5 DimstrSubject6 DimstrBody7 8 strSubject "This is a test email"9 strBody "This test email is using testdevasp.com "&_10 "as the sender email address but we are "&_11 "…

Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)

做这样的比赛既考快速编码的能力&#xff0c;还有快速思维的能力。本人很弱&#xff0c;跌了rating。。加油&#xff01;&#xff01;&#xff01;。。 第一题上来就把题意理解错了。。粗心啊。。直接模拟着做就行:1&#xff1a;如果字符串全是大写字母就进行大小写转换:2&…

【Linux】 Linux简单操作之网络通信和网络访问

一、网络通信 1、ifconfig &#xff1a; 查看ip信息 2、ping &#xff1a; 测试网络连通 格式 &#xff1a; ping ip或域名 注&#xff1a; 通过该测试你能知道你的计算机是不是能联网的。 二、网络访问 1、curl &#xff1a; 测试网络访问和模拟用户访问 2、wget &#x…

将类别加入到别人的名称空间内

怎样把自己的类别加入到别人的名称空间内&#xff0c;在引用时&#xff0c;能在别人的名称空间下使用到自己写的类别。 这是一位台湾朋友问及此问题&#xff0c;因此录制一个视频做演示&#xff1a; 视频文件格式&#xff1a;.wmv&#xff1b;大小&#xff1a;9,706KB&#xff…

Linux内核初期内存管理---memblock(转)

http://www.maxwellxxx.com/linuxmemblock转载于:https://www.cnblogs.com/erhu-67786482/p/8873112.html

看懂SqlServer查询计划(转)

转自&#xff1a;http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 对于SqlServer的优化来说&#xff0c;可能优化查询是很常见的事情。关于数据库的优化&#xff0c;本身也是一个涉及面比较的广的话题&#xff0c;本文只谈优化查询时如何看懂SqlServer查询计划…

openoj的一个小比赛(F题解题报告)poj3978(dp+素数筛选)

http://openoj.awaysoft.com:8080/judge/contest/view.action?cid47#problem/F 一个素数帅选法的题目&#xff0c;才开始直接就套模板结构tle应为被题目中的As many as 1000 lines, 给坑了总的时间消耗是1000*10^5.。这样暴力枚举的话肯定会超时&#xff0c;当时就急了&#x…

【Linux】Linux简单操作之管道与重定向

一、重定向 1、重定向 使用符号 > 例如&#xff1a; echo "hello world" > a.txt注&#xff1a;如果文件不存在则会自动创建文件 2、重定向覆盖&#xff1a; 代码实现&#xff1a; echo "hello world" > a.txt3、重定向追加&#xff1a; 使…

linux tc打造ip流量限制

tc是个配置Linux内核流量控制的工具 名字 tc - 显示&#xff0f;维护流量控制配置 摘要 tc qdisc dev DEV qdisc tc class dev DEV parent qdisc-id qdisc tc filter dev DEV protocol protocol prio priority filtertype flowid flow-id tc qdisc show tc class show dev DEV …

vue Element-ui 表格自带筛选框自定义高度

el-table中可以在一行的某列进行筛选&#xff0c;代码如下&#xff1a; <el-table-column prop"classOfTest" class"test" label"测试类名" :filters"classList" filter-placement"bottom-start" width"300" c…

【Linux】Linux简单操作之vi与vim编辑器

一、vi与vim的区别 vi类似于普通的记事本&#xff0c;没有字体颜色的变化&#xff0c;vim对一些关键字会进行变色处理 二、vi 1、启动vi编辑器 格式&#xff1a; vi 文件名 注&#xff1a; &#xff08;1&#xff09;如果文件存在&#xff0c;则打开该文件 &#xff08;2…

vectorbool不是容器

vector<bool>不是容器&#xff0c;为了节省空间&#xff0c;其内部是用一个bit来表示一个bool值的&#xff0c;operator[]不会返回一个指向bool值的引用&#xff0c;而是返回一个代理&#xff08;proxy&#xff09; 试图以数组的形式来使用vector<bool>会引发错误。…