acwing算法提高之动态规划--背包模型(四)

目录

  • 1 基础知识
  • 2 模板
  • 3 工程化

1 基础知识

暂无。。。

2 模板

暂无。。。

3 工程化

题目1:货币系统。

解题思路:完全背包模型求方案数。

状态定义f[i][j]:从前i个物品中选体积恰好为j的方案数。
状态转移f[i][j],以下情况的累加和,

  1. 不选择第i个物品,即f[i-1][j]
  2. 选择第i个物品1次,即f[i-1][j-v[i]]
  3. 选择第i个物品2次,即f[i-1][j-2*v[i]]
  4. ……
  5. 选择第i个物品max次,即f[i-1][j-max*v[i]]

状态转移可以简化成,

状态转移f[i][j],以下情况的累加和,

  1. 不选择第i个物品,即f[i-1][j]
  2. 选择第i个物品1次~max次的累加和,为f[i][j-v[i]]

初始化,f[0][0] = 1

最终答案为f[n][m]

同样的,也可以将状态降维,C++代码如下,

#include <iostream>using namespace std;const int M = 3010;
int n, m;
long long f[M];int main() {cin >> n >> m;f[0] = 1;for (int i = 0; i < n; ++i) {int x;cin >> x;for (int j = x; j <= m; ++j) {f[j] += f[j-x];}}cout << f[m] << endl;return 0;
}

题目2:货币系统,求最简的面值表示。

解题思路:完全背包求方案数的应用。

C++代码如下,

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 110, M = 25010;
int n, m;
int v[N];
int f[M];int main() {int T;cin >> T;while (T--) {cin >> n;for (int i = 0; i < n; ++i) cin >> v[i];sort(v, v + n);int res = 0;m = v[n - 1];memset(f, 0, sizeof f);f[0] = 1;for (int i = 0; i < n; ++i) {if (f[v[i]] == 0) res += 1;for (int j = v[i]; j <= m; ++j) {f[j] += f[j - v[i]];}}cout << res << endl;}return 0;
}

题目3:混合背包问题。

解题思路:完全背包归为一类,体积从小到大枚举;01背包和多重背包归为一类,体积从大到小枚举。

C++代码如下,

#include <iostream>using namespace std;const int M = 1010; 
int n, m;
int f[M];int main() {cin >> n >> m;for (int i = 0; i < n; ++i) {int v, w, s;cin >> v >> w >> s;if (s == 0) {//完全背包问题for (int j = v; j <= m; ++j) {f[j] = max(f[j], f[j - v] + w);}} else {if (s == -1) s = 1;for (int k = 1; k <= s; k <<= 1) {for (int j = m; j >= k * v; --j) {f[j] = max(f[j], f[j - k * v] + k * w);}s -= k;}if (s) {for (int j = m; j >= s * v; --j) {f[j] = max(f[j], f[j - s * v] + s * w);}}}}cout << f[m] << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS pro与SuperMap根据属性自动填充颜色步骤

GIS项目经常会接触到控规CAD数据&#xff0c;想要把数据转换成GIS图层并发布&#xff0c;需要进行专题配图。研究了一下ArcGIS pro和SuperMap iDesktop的配图&#xff0c;整理一下用到的一些技术思路。 1、Excel表格根据RGB值添加单元格填充颜色 要实现如上效果图&#xff0c;…

【C语言程序设计】循环结构程序设计

目录 前言 一、程序设计第一题 二、程序设计第二题 三、程序设计第三题 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da…

Ubuntu 22.04 安装 OCI CLI

Ubuntu 22.04 安装 OCI CLI 安装命令 安装命令 wget https://codeload.github.com/oracle/oci-cli/zip/master -O oci-cli.zip pip install oci-cli.zip完结&#xff01;

Armv8/Armv9从入门到精通-课程介绍

通知&#xff0c;Arm二期&#xff0c;咱们也有大合集PDF了&#xff0c;共计1587页&#xff0c;还未完成&#xff0c;后续持续更新和优化中。为了方便大家阅读、探讨、做笔记&#xff0c;特意整了此合集PPT&#xff0c;为了增加标签目录&#xff0c;还特意开了福兮阅读器会员。 …

宇视科技视频监控 main-cgi 文件信息泄露漏洞

宇视科技视频监控 main-cgi 文件信息泄露漏洞 一、产品简介二、漏概述三、复现环境四、漏洞检测手工抓包自动化检测 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#…

java实现局域网内视频投屏播放(一)背景/需求

一 背景 我们在用电视上投屏电影或者电视剧时&#xff0c;如果没有vip&#xff0c;用盗版电影网站投屏的话会有两个问题&#xff0c;1:他们网站没有投屏功能。2:卡&#xff01;&#xff01;&#xff01;。还有就是不能随心所欲的设置自己先要自动播放的视频列表&#xff08;如…

防止root用户误删除指令

在CentOS 7或其他Linux系统中&#xff0c;防止root用户误删除关键文件或目录的一种常见做法是使用chattr命令设置文件的"i"属性&#xff0c;使其变为不可变。这将防止文件被删除、重命名、链接或更改其内容。 chattr i /path/to/your/file_or_directory例如&#xf…

【C++】输入输出流 ⑩ ( 文件流 | 文件流打开方式参数 | 文件指针 | 组合打开方式 | 文件打开失败 )

文章目录 一、文件流打开方式参数1、文件流打开方式参数2、文件指针3、组合打开方式4、文件打开失败 一、文件流打开方式参数 1、文件流打开方式参数 文件流打开方式参数 : ios::in : 以只读方式打开文件 ;ios::out : 以只写方式打开文件 , 默认打开方式 , 如果文件已存在则清…

PHP中什么是Composer?

Composer 是一个用于 PHP 项目依赖管理的工具。它允许你定义、安装和管理 PHP 项目所需的外部库和工具。Composer 是一个命令行工具&#xff0c;通过一个名为 composer.json 的配置文件来管理项目的依赖关系。 主要功能包括&#xff1a; 依赖管理&#xff1a; Composer 可以解…

【C语言程序设计】选择结构程序设计

目录 前言 一、程序阅读 二、程序改错 三、程序设计 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如…

[Linux] Tomcat

一、Tomcat相关知识 1.1 Tomcat的简介 Tomcat 是 Java 语言开发的&#xff0c;Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器&#xff0c;是 Apache 软件基金会的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。Tomc…

19.java绘图

A.Graphics类 Graphics类是java.awt包中的一个类&#xff0c;它用于在图形用户界面&#xff08;GUI&#xff09;或其他图形应用程序中进行绘制。该类通常与Component的paint方法一起使用&#xff0c;以在组件上进行绘制操作。 一些Graphics类的常见用法和方法&#xff1a; 在组…

GEE机器学习——利用分类和回归树(Classification and Regression Trees,CART)土地分类分析

分类和回归树(Classification and Regression Trees,CART)方法 分类和回归树(Classification and Regression Trees,CART)是一种常用的机器学习算法,用于解决分类和回归问题。CART算法通过构建一棵决策树来对数据进行分类或回归预测。 CART方法的具体步骤如下: 1. 数…

Flask维护者:李辉

Flask维护者&#xff1a;李辉&#xff0c; 最近看b站的flask相关&#xff0c;发现了这个视频&#xff1a;[PyCon China 2023] 濒危 Flask 扩展拯救计划 - 李辉_哔哩哔哩_bilibili 李辉讲他在维护flask之余&#xff0c;开发了apiflask这个依托flask的框架。GitHub - apiflask/a…

如何通过 SSH 访问 VirtualBox 的虚机

VirtualBox 是一款免费虚机软件。在用户使用它安装了 linux 以后&#xff0c;它默认只提供了控制台的管理画面。 直接使用控制台管理 Linux 没有使用诸如 putty 或者 vscode 这样的 ssh 远程管理工具方便。那么可不可以直接使用 ssh 访问 VirtualBox 上的 Linux 呢&#xff1f…

Vue3按需引入element plus 以及icon

最近在自学Vue3&#xff0c;打算做一个纯前端的小东西&#xff0c;记录一下element-plus的安装和使用。以下是安装使用过程&#xff0c;以及踩过的坑。 一、安装element-plus及icon npm i element-plus element-plus/icons-vue -S 二、安装按需导入的插件 npm i unplugin-…

云计算在数据处理中的应用

云计算在数据处理中的应用 一、引言 随着数据规模的爆炸式增长&#xff0c;数据处理成为了一个巨大的挑战。云计算作为一种灵活、可扩展的计算模式&#xff0c;为数据处理提供了强大的支持。本文将探讨云计算在数据处理中的应用。 二、云计算与数据处理 云计算是一种将计算资…

【Spark精讲】Spark作业执行原理

基本流程 用户编写的Spark应用程序最开始都要初始化SparkContext。 用户编写的应用程序中&#xff0c;每执行一个action操作&#xff0c;就会触发一个job的执行&#xff0c;一个应用程序中可能会生成多个job执行。一个job如果存在宽依赖&#xff0c;会将shuffle前后划分成两个…

同时安装5.7和8.0版本的MySQL

MySQL57安装 下载mysql-5.7.38-winx64.msi&#xff0c;安装管理员身份进入到安装文件夹的bin目录下 如何以管理员身份进入D盘 D:cd D:\Programs\MySQL\MySQL Server 5.7\bin把my.ini复制到mysql5.7安装目录下后 初始化 把配置文件放在安装目录下后&#xff0c;初始化的时候会…

玻色量子袁为出席中国移动第四届科技周量子计算算法与应用分论坛

9月12日&#xff0c;中国移动第四届科技周“量子计算算法与应用”分论坛在北京成功举办&#xff0c;中国移动研究院院长黄宇红发表致辞&#xff0c;中国移动未来研究院院长崔春风全程主持。玻色量子作为光量子计算领域真机测试与场景应用的标杆企业应邀出席&#xff0c;玻色量子…