当前位置: 首页 > news >正文

蓝桥杯备赛第二篇(背包问题)

1. 01 背包(采用状态压缩)

    public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int M = scanner.nextInt();int N = scanner.nextInt();int[] value = new int[N + 1];int[] weight = new int[N + 1];int[] dp = new int[M + 1];for (int i = 1; i <= N; i++) {weight[i] = scanner.nextInt();value[i] = scanner.nextInt();}for (int i = 1; i <= N; i++) {for (int j = M; j >= weight[i]; j--) {dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}System.out.println(dp[M]);}

2. 多重背包

	public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//容量为Mint M = scanner.nextInt();//种类int N = scanner.nextInt();//价值int[] value = new int[N + 1];//占用体积int[] weight = new int[N + 1];//个数int[] num = new int[N + 1];for (int i = 1; i <= N; i++) {value[i] = scanner.nextInt();weight[i] = scanner.nextInt();num[i] = scanner.nextInt();}int[] dp = new int[M + 1];for (int i = 1; i <= N; i++) {for (int j = M; j >= weight[i]; j--) {for (int k = 0; k <= num[i] && k * weight[i] <= j; k++) {dp[j] = Math.max(dp[j], dp[j - k * weight[i]] + k * value[i]);}}}System.out.println(dp[M]);}

3. 完全背包

	public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int M = scanner.nextInt();int[] value = new int[N + 1];int[] weight = new int[N + 1];for (int i = 1; i <= N; i++) {value[i] = scanner.nextInt();weight[i] = scanner.nextInt();}int[] dp = new int[M + 1];for (int i = 1; i <= N; i++) {for (int j = weight[i]; j <= M; j++) {dp[j] = Math.max(dp[j], dp[j - weight[i]] + value[i]);}}}

4.二维背包

	public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int M = scanner.nextInt();int V = scanner.nextInt();int[] weight = new int[N + 1];int[] volume = new int[N + 1];int[] value = new int[N + 1];for (int i = 1; i <= N; i++) {weight[i] = scanner.nextInt();volume[i] = scanner.nextInt();value[i] = scanner.nextInt();}int[][] dp = new int[M + 1][V + 1];for (int i = 1; i <= N; i++) {for (int j = M; j >= weight[i]; j--) {for (int k = V; k >= volume[i]; k--) {dp[j][k] = Math.max(dp[j][k], dp[j - weight[i]][k - volume[i]] + value[i]);}}}System.out.println(dp[M][V]);}

5.例题1:子集和_可重复

求从一些不重复数字中选取一些数字使得和为target的方案数,每个数字可以重复使用,求方案数。这是一个完全背包问题。 

public static void main(String[] args) {int[] nums = new int[]{0, 1, 2, 3, 4, 5, 6,7,8,9,10};int target = 12;int N = 10;int[] dp = new int[target + 1];dp[0] = 1;for (int i = 1; i <= N; i++) {for (int j = nums[i]; j <= target; j++) {dp[j] += dp[j - nums[i]];}}System.out.println(dp[target]);}

 6.例题2:子集和_不可重复

求从一些不重复数字中选取一些数字使得和为target的方案数,每个数字最多只能选一次,求方案数。这是一个01问题。

public static void main(String[] args) {int[] nums = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int target = 12;int N = 10;int[] dp = new int[target + 1];dp[0] = 1;for (int i = 1; i <= N; i++) {for (int j = target; j >= nums[i]; j--) {dp[j] += dp[j - nums[i]];}}System.out.println(dp[target]);}

 7.例题3:2022

从1到2022个数中,选择10个数,求这10个数之和为2022的方案数。这是一个二维背包问题。

	public static void main(String[] args) {long[][] dp = new long[11][2023];dp[0][0] = 1;for (int i = 1; i <= 2022; i++) {for (int j = 10; j >= 1; j--) {for (int k = 2022; k >= i; k--) {dp[j][k] += dp[j - 1][k - i];}}}System.out.println(dp[10][2022]);}

相关文章:

蓝桥杯备赛第二篇(背包问题)

1. 01 背包&#xff08;采用状态压缩&#xff09; public static void main(String[] args) {Scanner scanner new Scanner(System.in);int M scanner.nextInt();int N scanner.nextInt();int[] value new int[N 1];int[] weight new int[N 1];int[] dp new int[M 1];…...

【postgresql 基础入门】带过滤条件的查询,where子句中的操作符介绍,案例展示,索引失效的大坑就在这里

查询数据-过滤数据 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#…...

vue项目打包获取git commit信息并输出到打包后的指定文件夹中

需求背景&#xff1a; 前端项目经常打包&#xff0c;发包部署&#xff0c;为了方便测试及运维发现问题时与正确commit信息对比 实现方式&#xff1a; 使用Node.js的child_process模块来执行git命令 实现步骤&#xff1a; 1.在package.json的同级目录下新建一个version.js文件。…...

vue 移动端app预览和保存pdf踩坑

需求 使用Vue开发h5&#xff0c;嵌套到Android和IOS的Webview里&#xff0c;需要实现pdf预览和保存功能&#xff0c;预览pdf的功能&#xff0c;我这边使用了三个库&#xff0c;pdf5&#xff0c;pdf.js&#xff0c;vue.pdf&#xff0c;现在把这三个库在app端的坑分享一下。先说…...

Vueuse:打造高效的 Vue.js 开发利器

Vueuse&#xff1a;打造高效的 Vue.js 开发利器 Vueuse 是一个功能强大的 Vue.js 生态系统工具库&#xff0c;它提供了一系列的可重用的 Vue 组件和函数&#xff0c;帮助开发者更轻松地构建复杂的应用程序。本文将介绍 Vueuse 的主要特点和用法&#xff0c;以及它在 Vue.js 开发…...

mysql锁的创建方式

在 MySQL 中,锁是用来控制多个用户对同一数据的访问。主要有两种类型的锁:表级锁和行级锁。MySQL 的锁定机制主要是通过 SQL 语句来实现的,而不是通过特定的锁定命令。下面是一些常见的锁相关的 SQL 操作方式:表级锁 MySQL 中,表级锁是最基本的锁策略,它会锁定整个表。一…...

5.WEB渗透测试-前置基础知识-常用的dos命令

内容参考于&#xff1a; 易锦网校会员专享课 上一篇内容&#xff1a;4.WEB渗透测试-前置基础知识-快速搭建渗透环境&#xff08;下&#xff09;-CSDN博客 常用的100个CMD指令 1.gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 &#xff0c;是一个…...

解决:code ERESOLVE:ERESOLVE could not resolve 的报错问题

报错实例 报错原因 是我执行npm i xxx-xx的时候会出现这个错误 查了资料表示是node.js的问题 或者的依赖本身的问题 解决 1.在后面加上 --legacy-peer-deps 示例&#xff1a;npm i sass-loader7.3.1 --legacy-peer-deps 2&#xff0c;检查node版本&#xff0c;更改node版本 …...

Dockerfile(3) - WORKDIR 指令详解

WORKDIR 切换到镜像中的指定路径&#xff0c;设置工作目录在 WORKDIR 中需要使用绝对路径&#xff0c;如果镜像中对应的路径不存在&#xff0c;会自动创建此目录一般用 WORKDIR 来替代 切换目录进行操作的指令 RUN cd <path> && <do something> WORKDIR…...

2024万元投影仪怎么选?极米RS10 Ultra和当贝X5 Ultra实测横评

随着过去一年投影仪的不断进步&#xff0c;高端型号在2024年初的选择变得更加多样。除了激光外混光已然成为“金字塔顶端”的一种全新光源选择。目前主流的就是作为Dual Light 2.0新升级的极米RS10 Ultra&#xff0c;以及ALPD5.0超级全色激光代表当贝X5 Ultra。很多人也肯定想知…...

java环境搭建

要搭建 Java 环境&#xff0c;你需要进行以下步骤&#xff1a; 1. 下载和安装 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;访问 Oracle 官方网站&#xff08;https://www.oracle.com/java/technologies/javase-jdk14-downloads.html&#xff09;&#xff0c;…...

【GB28181】wvp-GB28181-pro快速修改登录页面名称(前端)

引言 作为一个非前端开发人员,自己摸索起来比较费劲,也浪费了很多时间 本文快速帮助开发者修改为自己名称的一个国标平台 文章目录 一、 预期效果展示二、 源码修改-前端三、 验证修改效果一、 预期效果展示 二、 源码修改-前端 需要修改的文件位置: 项目工程下web_src目录…...

【lv15 day1 设备号申请和注销】

一、Linux内核对设备的分类 linux的文件种类&#xff1a; -&#xff1a;普通文件 d&#xff1a;目录文件 p&#xff1a;管道文件 s&#xff1a;本地socket文件 l&#xff1a;链接文件 c&#xff1a;字符设备 b&#xff1a;块设备Linux内核按驱动程序实现模型框架的不同&#…...

JVM对象创建与内存分配机制

JVM对象创建与内存分配机制 JVM对象创建与内存分配机制 JVM对象创建与内存分配机制对象的创建过程内存分配对象栈上分配对象逃逸分析标量替换 对象在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代对象年龄动态判断老年代空间分配担保机制 对象头与指针压缩对象头利…...

《TCP/IP详解 卷一》第10章 UDP和IP分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…...

Android进阶之路 - RecyclerView停止滑动后Item自动居中(SnapHelper辅助类)

之前一直没注意 SnapHelper 辅助类的功能&#xff0c;去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验&#xff0c;觉得还是很有必要了解一下&#xff0c;尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景&#xff0c;且听…...

高性能图表组件LightningChart .NET v11.0发布——增强DPI感知能力

LightningChart完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学&am…...

神经网络系列---计算图基本原理

文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…...

3D数字孪生

数字孪生&#xff08;Digital Twin&#xff09;是物理对象、流程或系统的虚拟复制品&#xff0c;用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要&#xff0c;因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…...

C++惯用法之空基类优化

相关系列文章 C惯用法之Pimpl C惯用法之CRTP(奇异递归模板模式) C之std::tuple(二) : 揭秘底层实现原理 目录 1.空类 2.空基类优化 3.内存布局原则 4.实例分析 5.总结 1.空类 C 中每个对象的实例都可以通过取地址运算符获取其在内存布局中的开始位置&#xff0c;因此每个类…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...