【算法竞赛 5】动态规划 ——— 闫氏DP分析法(从集合角度来分析DP问题——01背包)

article/2023/10/1 4:30:46

目录

Description

输入格式

输出格式

数据范围

输入样例

输出样例:

题解

状态表示

状态计算

AC_Code

优化后代码

 


Description

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

输入格式


第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。

输出格式


输出一个整数,表示最大价值。

数据范围

0<N,V≤1000
0<vi,wi≤1000


输入样例

4 5
1 2
2 4
3 4
4 5


输出样例:

8

题解

每个物品只有两种状态,选或者不选,选法数量就是2的n次方种。

状态表示

一般是第一维是选取前 i 个物品,后面几维是限制条件

集合 :所有只考虑前 i 个物品,且总体积不大于 j 的选法的集合。

属性 :集合中每个方案的max

状态计算

集合划分(如图)

1、不重复

2、不遗漏

AC_Code

#include<iostream>
#include<algorithm>using namespace std;const int N = 1010;int n,m;
int v[N],w[N];//分别表示体积和价值
int f[N][N];int main()
{cin >> n >> m;for(int i = 1; i <= n; i ++)  cin >> v[i] >> w[i];for(int i = 1; i <= n; i ++)for(int j = 0;j <= m; j ++){f[i][j] = f[i - 1][j];//左半边的子集if(j >= v[i])  f[i][j] = max(f[i][j], f[i - 1][j - v[i]] + w[i]);}cout << f[n][m] << endl;return 0;
}

优化后代码

#include <iostream>using namespace std;const int N = 1010;int n, m;
int f[N];int main()
{cin >> n >> m;for (int i = 0; i < n; i ++ ){int v, w;cin >> v >> w;for (int j = m; j >= v; j -- )f[j] = max(f[j], f[j - v] + w);}cout << f[m] << endl;return 0;
}

 


http://www.ngui.cc/article/show-841462.html

相关文章

许下你的新年愿望吧

好久没来了&#xff0c;因为太久没有学习过了&#xff0c;自从寒假开始每天都忙着玩&#xff0c;忙着弄一些自己喜欢的自媒体小兴趣&#xff0c;比如自己小红薯的经营、手账、公众号情感记录博文之类的&#xff0c;还要兼职写稿&#xff0c;所以很少打开CSDN了。今天写稿前打开…

OSG三维渲染引擎编程学习之二十八:“第三章:OSG场景组织” 之 “3.10 Switch开关节点”

目录 第三章:OSG场景组织 3.10 Switch开关节点 3.10.1 Switch介绍 3.10.2 Switch示例 第三章:OSG场景组织 在OSG中存在两个树:场景树、渲染树。其中,场景树是由一系列节点Node组成,这些节点Node可以是矩阵变换、状态变换,也可以是绘制对象等。场景树反映了场景的空间…

零基础学Python(全彩版)

ISBN: 978-7-5692-2225-8 编著&#xff1a;明日科技 页数&#xff1a;448页 阅读时间&#xff1a;2022-08-14 推荐指数&#xff1a;★★★★★ 一本非常适合入门的Python 3编程教程书籍&#xff0c; 不仅有视频教程还有很多的代码示例&#xff0c; 让你在一步步学习中掌握Pytho…

2.2 标识符与关键字

文章目录1 标识符2 关键字1 标识符 标识符可以简单的理解成一个名字。 在Java中&#xff0c;我们需要给代码中的很多元素起名&#xff0c;包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被称为标识符&#xff0c;一个正确的标识符需要遵循以下规则&#xff…

恶意代码分析实战 4 识别汇编中的C代码结构

4.1 Lab06-01.exe 由main函数调用的唯一子过程中发现的主要代码结构是什么&#xff1f; 使用Strings进行查看&#xff0c;需要注意最后的这两个字符串&#xff0c;一个是“没有网”&#xff0c;另一个是“联网成功”。 IDA 中查看图结构。 明显是if-else结构。 位于0x4010…

MySQL内外连接

文章目录MySQL内外连接内连接外连接左外连接右外连接简单案例MySQL内外连接 表的连接分为内连接和外连接。 内连接 内连接 内连接的SQL如下&#xff1a; SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;说明一下&#xff1a; …

前端学习——CSS

文章目录1.CSS1.1什么是CSS1.2快速入门1.3.三种CSS导入方式2.选择器2.1基本选择器2.1.1标签选择器2.1.2类选择器2.1.3id选择器2.2层次选择器2.2.1后代选择器2.2.2子选择器2.2.3相邻兄弟选择器2.2.4通用选择器2.3结构伪类选择器2.4属性选择器3.美化网页元素3.1span标签3.2字体样…

GPDB OOM问题

前文&#xff0c;我们分析了gp_vmem_protect_limit参数的意义&#xff0c;仅统计gp_malloc中申请的&#xff0c;它并没有统计共享内存的部分&#xff0c;所以仍旧有操作系统OOM的风险&#xff0c;详情&#xff1a;GPDB中gp_vmem_protect_limit参数的意义。但经测试验证&#xf…

《TPM原理及应用指南》学习 —— TPM实体0

本文对应《A Practical Guide to TPM 2.0 — Using the Trusted Platform Module in the New Age of Security》的第8章概述。 CHAPTER 8 TPM Entities —— 第8章 TPM实体 A TPM 2.0 entity is an item in the TPM that can be directly referenced with a handle. The t…

TCP/IP IP地址概念与应用

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.什么是IP地址 二.IP地址的组成 三.IP地址分类 A类IP地址 …