首页 > 其他分享 >【笔记】二进制拆分

【笔记】二进制拆分

时间:2023-11-14 18:22:25浏览次数:27  
标签:背包 容积 二进制 笔记 拆分 物品

二进制拆分

二进制拆分是对多重背包的一种优化方式,可以极大的优化多重背包的时间。

原理

一个数可以被拆分为任意二进制的和。

例如:$7= 2^0 + 2^1 +2^2 $

任意一个数都可以表示为几个 \(2\) 的多少次方之和的形式。

我们回顾下完全背包问题。

背包容积为 \(C\) , 有 \(n\) 种物品 , 每种物品有 \(k[i]\) 个, 第 \(i\) 个物品占用 \(w[i]\) 的容积,价值为 \(v[i]\) 。问能用背包装进的物品和的最大值。

常规做法是将其转化成01背包来做,时间复杂度为:\(O(C \times \sum_{1}^{n} k[i] )\) 。

实现

标签:背包,容积,二进制,笔记,拆分,物品
From: https://www.cnblogs.com/int-Hello-world/p/17832237.html

相关文章

  • 阅读笔记五
    第六章:对象和数据结构对象暴露行为,隐藏数据,便于添加新对象类型而无须修改既有行为,同时难以在既有对象中添加新行为;数据结构暴露数据。没有明显的行为,便于向既有数据结构添加新的行为,同时难以向既有函数添加新的数据结构。数据抽象:隐藏实现关乎抽象,暴露抽象接口,以便用户无须了解......
  • kafka第七天学习笔记
    在Kafka学习的第七天,你可能会进一步深入了解Kafka的特性和工作机制。以下是一些可能的学习点:Kafka的存储机制:Kafka使用一种称为“日志文件”的存储机制,将消息作为字节流存储在硬盘上。这种存储方式使得Kafka能够高效地处理大量的数据。消息的索引:Kafka为每个分区在硬盘上创建一个索......
  • 秦疆的Java课程笔记:32 基础 JavaDoc生成文档
    javadoc命令是用来生成自己API文档的参数信息:@author作者名@version版本号@since指明需要最早使用的JDK版本@param参数名@return返回值情况@throws异常抛出情况比如这就是一个JDK21的Oracle官方API:点击跳转packageacolyte.operator;/***这是加在类......
  • 动手学深度学习笔记01
    安装https://blog.csdn.net/qq_18620653/article/details/105329219配置显卡驱动、CUDA、cuDNN以及说明三者之间的关系https://blog.csdn.net/qq_18620653/article/details/105329219配置anacondahttps://blog.csdn.net/qq_18620653/article/details/105335481数据操......
  • XJTU自动化钱班辅修电气工程专业课笔记合集
    通过百度网盘分享的文件:笔记整理链接:https://pan.baidu.com/s/1BrHQ1EqvlQlbWqpD5h_6Sg?pwd=shsg 提取码:shsg复制这段内容打开「百度网盘APP即可获取」完全为个人原创笔记内容,仅包含少量板书ppt与个别页面他人笔记截图)另有基本所有课程教材pdf版本,不便直接放上来,可以私聊免......
  • 秦疆的Java课程笔记:31 基础 包机制
    为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。包语句的语法格式为:packagepkg1[.pkg2[.pkg3[…]]];一般利用公司域名倒置作为包名比如“百度”的域名“www.baidu.com”对应的包名应该是“com.baidu.www”为了能够使用某一个包的成员,我们需要在Java......
  • 图解密码技术----读书笔记
    第1章环游密码世界术语加密encrypt明文plaintext密文ciphertext解密decrypt密码cryptography密码破译cryptanalysis破译,密码分析破译者cryptanalyst对称密码symmetriccryptography---->机密性公钥密码public-keycryptography<=>非对称密码asymmet......
  • java进阶漏洞学习----log4j漏洞学习笔记
    CVE-2021-44228log4j2漏洞版本范围2.x<version<=2.14.1环境搭建linux的ijideajava版本:JDK1.8u102https://www.oracle.com/cis/java/technologies/javase/javase8-archive-downloads.htmlLOG4J.javaimportorg.apache.logging.log4j.LogManager;importorg.apache.l......
  • 秦疆的Java课程笔记:30 基础 三元运算符及小结
    扩展赋值运算符:+=,-=,*=,/=publicclassDome1{publicstaticvoidmain(String[]args){inta=10;intb=20;a+=b;//相当于a=a+bSystem.out.println("a="+(a));intc=30;intd=15;......
  • 11月1日《软件需求模式》阅读笔记一
    软件需求这门课课程要求精读一门关于软件需求方面的书,我选择了《软件需求模式》这本书,从这本书来了解一下软件需求的一些流程以及需要软件工作人员做好那些事情。首先从这本书的前言中,我知道了这本书先是要教会我们关于需求的概念,让我们知道什么是需求,然后就是教我们各种关于需求......