多重背包问题 一句话说清楚“二进制拆分“
目录
区别:
一句话说清楚:
板子:
区别:
得先懂完全背包问题完全背包问题 非零基础-CSDN博客
都是让背包内价值最大。
完全背包问题每种物品可以取无数次。而多重背包问题每件取的次数有限。
都可以用的最挫的方法就是0~k件去遍历。
完全背包问题可以推出公式优化(或者说逻辑上可以直接一次从前往后遍历)
而多重背包问题不好推公式。本文讲的是二进制拆分方法来优化(完全背包问题也可以用这个,但是不是最优)
可以参考大佬文章学习 背包九讲——全篇详细理解与代码实现-CSDN博客
练习题: P1776 宝物筛选 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
一句话说清楚:
一句话说清这个二进制拆分:
int 整形知道吧?只需要32位就可以表示 -2147483647 - 1 ~ 2147483647
有点感觉吗?
再细说:1可以表示1 , 2可以表示2 , 1和2一起可以表示3 ,但我们只需要用到两个数,不需要遍历1到3
板子:
目的:把num拆成二进制 (最后一位(即剩余)未必是2的倍数)
第 i 件物品 ,本次装 k 件 ,j 是当前背包大小
W 是背包大小
m[ i ]是该物品的数目,w[ i ]是该物品的大小 , v[ i ]是该物品的价值
num是最大数目 : 看能装多少 W / w[i] ,再看有多少m[ i ] 。数目够,就尽可能装。数目w[i]不够,那就全装进去。
vector<ll>dp(MAX);for (int i = 1; i <= n; i++){int num = min(m[i], W / w[i]);for (int k = 1; num > 0; k<<=1){if (k > num)k = num;num -= k;for (int j = W; j >= 0; j--){if (j - w[i] * k >= 0)dp[j] = max(dp[j], dp[j - w[i] * k] + v[i] * k);}} }
if可以自行优化掉
ε≡٩(๑>₃<)۶ 一心向学,加油!
相关文章:
多重背包问题 一句话说清楚“二进制拆分“
目录 区别: 一句话说清楚: 板子: 区别: 得先懂完全背包问题完全背包问题 非零基础-CSDN博客 都是让背包内价值最大。 完全背包问题每种物品可以取无数次。而多重背包问题每件取的次数有限。 都可以用的最挫的方法就是0~k件去…...
nodejs微信小程序+python+PHP本科生优秀作业交流网站的设计与实现-计算机毕业设计推荐
通过软件的需求分析已经获得了系统的基本功能需求,根据需求,将本科生优秀作业交流网站功能模块主要分为管理员模块。管理员添加系统首页、个人中心、用户管理、作业分类管理、作业分享管理、论坛交流、投诉举报、系统管理等操作。 随着信息化社会的形成…...
使用git出现的问题
保证 首先保证自己的git已经下载 其次保证自己的gitee账号已经安装并且已经生成ssh公钥 保证自己要push的代码在要上传的文件夹内并且配置文件等都在父文件夹(也就是文件没有套着文件) 问题 1 $ git push origin master gitgitee.com: Permission de…...
rk3568 适配PCIE(二)
rk3568 适配pcie3.0 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机主板和其他设备的高速串行总线接口。PCIe 2.0和PCIe 3.0是两个不同版本的PCIe规范,它们在以下几个方面有所不同: 带宽:PCIe 2.0的理论带宽为每条通道5 Gbps,而PCIe 3.0的理论带…...
Java基础 进制
在Java中,可以使用不同的进制表示整数常量和字面量。 十进制(Decimal):默认为十进制,不需要添加前缀。例如:int num 10;二进制(Binary):以0b或0B作为前缀表示二进制。例…...
springboot中@Builder注解的详细用法实例,跟数据库结合。
在Spring Boot中,Builder注解是Lombok库提供的一个注解,用于生成带有Builder模式支持的构造器方法。通过Builder注解,可以简化对象的创建过程,特别适用于需要设置多个属性的情况。 下面是一个使用Builder注解的示例: …...
WT2605C蓝牙音频语音芯片:具备大功率IO驱动能力,引领音频技术新纪元
在当今的电子科技时代,功率强大的IO驱动能力成为音频设备性能的重要指标。近日,一款名为WT2605C的蓝牙音频语音芯片,以其最高可直接驱动64mA的大功率IO驱动能力,引起业界的广泛关注。这款芯片的出现,无疑将为音频设备的…...
【Java 基础】20 多线程操作方法
文章目录 1.获取和设置线程的名字1)获取默认名字2)获取自定义的名字 2.判断线程是否启动3.线程的强制执行4.让线程睡一会儿5.中断线程6.守护线程7.线程的礼让 前一节我们介绍了线程的定义、创建方法、状态以及各状态间的转换。在状态转换处只是简单的说明…...
SpringBoot使用mybatis-plus分页查询无效解决方案
问题概述 SpringBoot中使用mybatis-plus实现分页查询时,提供一个page分页对象和一个QueryWrapper条件类对象,在使用Service.page(page,queryWrapper)方法进行分页查询时,发现并未查询到分页的结果,反而是查询到全部符合条件的结果…...
QT 中 线程池 (备查)
QRunnable类 API 1)在Qt中使用线程池需要先创建任务,添加到线程池中的每一个任务都需要是一个 QRunnable 类型,因此在程序中需要创建子类继承 QRunnable 这个类。 2)然后重写 run() 方法,在这个函数中编写要在线程池中…...
LeetCode刷题笔记第71题:简化路径
LeetCode刷题笔记第71题:简化路径 题目 给定一个路径,简化路径 要求: 1、以’/‘开头 2、两个目录之间只有一个’/’ 3、不能以’/‘结尾 4、路径中不能有’.‘和’…’ 想法 利用栈的数据存储方式的思想,将路径字符顺序入栈遇…...
JavaScript <md5加密的两种不同输出结果分析>--案例(二点一)
前言: 问题是这样的,在浏览器中看到这段代码 然后在控制台进行输出.得到: 紧接着,就在,js文件里面进行转译: 可是,得到的结果是: 这是问题!!! 正题: 为什么相同的js代码,在 .js 文件中的输出与 Chrome 控制台中的输出不一样? 环境差异:不同的JavaScript环境&…...
『亚马逊云科技产品测评』活动征文|基于亚马逊EC2云服务器配置Nginx静态网页
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器(Elastic Compute Cloud)是亚马…...
28、卷积 - 卷积的基础公式
本节推导一下卷积的基础公式,还是先上一张卷积运算的示意图图。 我们知道,一张图片有 3 个维度,分别是长、宽、通道。 这三个维度分别用 3 个字母代替,分别是 H(Height, 对应的是长这一维度), W(Width, 对应的是宽这一维度),C(Channel,对应的是通道这一维度)。 对于…...
Mac电脑vm虚拟机 VMware Fusion Pro中文 for mac
VMware Fusion Pro是一款功能强大的虚拟机软件,适用于需要在Mac电脑上运行其他操作系统的用户。它具有广泛的支持、快速稳定的特点以及多种高级功能,可以满足用户的各种需求和场景。 多操作系统支持:VMware Fusion Pro允许在Mac电脑上运行多…...
区块链技术的应用场景和优势
目录 一、引言 二、什么是区块链技术 三、区块链技术的应用场景 1.金融领域 (1)支付和清算:区块链可以为支付和金融结算提供更加快速、安全、便捷的方式。例如瑞士银行UBS和Deutsche Bank已经合作开发了基于区块链的支付和清算系统。 &a…...
java面试题-谈谈sql优化-mysql
远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 这是面试总结出来的几点,每次问道都是这么回…...
【Linux服务器Java环境搭建】07 在linux中安装MySql,以及对MySQL的配置与远程连接
【Linux服务器Java环境搭建】01购买云服务器以及在服务器中安装Linux系统 【Linux服务器Java环境搭建】02 通过xftp和xshell远程连接云服务器 【Linux服务器Java环境搭建】03 Git工具安装 【Linux服务器Java环境搭建】04 JDK安装(JAVA环境安装) 【Linux服…...
用 LangChain 搭建基于 Notion 文档的 RAG 应用
如何通过语言模型查询 Notion 文档?LangChain 和 Milvus 缺一不可。 在整个过程中,我们会将 LangChain 作为框架,Milvus 作为相似性搜索引擎,用二者搭建一个基本的检索增强生成(RAG)应用。在之前的文章中&a…...
QT中如何使用自定义控件
在 Qt 中,要使用自定义控件,需要遵循以下步骤: 创建自定义控件: 首先,需要创建一个自定义控件类,该类继承自 QWidget 或 QGraphicsItem 等基本控件类,并实现其相关函数和槽函数等。 在头文件中…...
xcode ——Instrumets(网络连接调试)使用
环境: instruments 使用只能在真机调试时使用,且真机系统必须ios15 点击debug 按钮——Network——Profile in Instruments 然后就可以看到如下面板 展开运行的项目,点击session下的域名,下方回出现该域名下的网络请求。点击Deve…...
Ps:文字操作常用快捷键
对文字的设置操作,可在工具选项栏或“字符”面板上进行。但是,如果能记住并使用快捷键,可大大提高工作效率。 设置文字颜色 Color 1、选中几个或全部文字后,除了使用工具选项栏上的“颜色”按钮,还可以使用快捷键 Alt…...
SpringSecurity的默认登录页的使用
SpringSecurity的默认登录页的使用 01 前期准备 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql驱动--><dependency><grou…...
【Rust日报】2023-12-04 slint 成功案例
slint 成功案例 SK Signet是美国领先的电动车充电解决方案提供商,推出了适用于其电动车充电桩的新型HMI(人机界面)。支持15英寸和32英寸触摸屏。 该HMI由Slint制作,为充电站运营商提供了额外的商机。SK Signet经理Sang-Baek Lee表…...
嵌入式硬件和软件哪个好?
嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案,要求理解嵌入式系统架构,有一…...
MySQL 8.x 自签证书通过keytool和openssl转成JKS文件
一、写在前面 数据库MySQL 8.0 通过自签命令在datadir下生成了所有的证书文件。由于Java的JDK不支持直接加载PEM格式的证书,所以需要将PEM格式证书转换成Java能够直接加载的JKS格式证书。我们需要将根证书ca.pem转换成JKS格式的根证书truststore.jks,将…...
MybatisPlus概述
MybatisPlus概述 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通…...
C++之枚举与宏定义
1 枚举enum C的枚举类型可以用来表示一组有限且固定的值。比如在如下代码中: enum Color { RED, GREEN, BLUE };定义了Color的枚举类型,分别对应三种不同的颜色。C编译器会为枚举类型的常量分配整数值,从0开始递增。因此,在这个…...
DAPP开发【09】NFT交易市场开发(hardhat测试)
测试文件下新建market.js文件 扁平化,将所有依赖放在tmp.sol,可以去给他人使用 npx hardhat flatten > tmp.sol 测试文件 const {expect} require(chai); const {ethers} require(hardhat);describe(Market,async function(){//定义三个合约&a…...
【Spring Boot】如何通过RestTemplate获取另一个服务的接口返回信息
背景 在查询订单信息的时候,需要获取用户的信息,同时订单和用户分属于不同的服务中,并且服务的数据库的数据分开的,其直接连接数据库并操作数据库是不可以的。那我们可以通过RestTemplate对象请求另一个服务的API接口获取相关的响…...
外贸网站建设推广优化/国内seo公司
背景 首先我是个菜鸡,工资也低的一笔。 刚毕业时候在一家国企上班干 app 开发,干了快两年的时候,跳槽到了一家伪大厂干安全。投了不少简历都没有回音,只有这加伪大厂要我就来了。当时说好了会接触一些底层的东西,然而…...
绍兴网站建设哪家好/平台广告推广
返璞归真这几天项目有一个linux下部署数据库的操作,数据库使用python进行初始化安装。然后问题来了,由于linux服务器涉及安全要求,除了代码以来的Python3.6版本外不允许安装其他插件与工具,不巧的是python的代码报错了…如果放在平…...
中国建设委员会官方网站/360网站收录
关注“潜在价值”,最好的技术商业媒体,了解那些智慧商业 本文由潜在价值旗下 创意产品推荐平台“钛空舱”推出 钛空(ID:TiKong-life) 一个关注于科技与创意生活的选品、荐品平台 新奇、实用、品质保证 一切关于未来生活…...
做网站买服务器大概多少钱/线上营销推广公司
导出excel时,xls格式只能导出不超过255行或列的文件,超过之后只能使用xlsx,为避免客户选择xls按钮,建议去掉xls按钮 找到jar包,复制一份,注意做好备份。 解压,找到弹出框的文件 ,注释掉相应的按…...
有用dojo做的网站吗/图片优化是什么意思
本文主要向大家介绍了JAVA语言中字符串indexof() 的使用方法介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。Java中字符串中子串的查找共有四种方法(indexof())indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始…...
中国2020年哪里大建设/seo外链怎么做能看到效果
创建 Jersey 工程需要使用 Apache 的 Maven 软件工程和管理工具。所有的Jersey产品模块都可以在 Maven中央库 中找到。这样的话 Jersey 可以非常容易和其他基于 Maven 的项目进行配置(non-SNAPSHOT)。 Jersey 已经部署到中央仓库中了,因此你…...