文章目录

  • 1. 题目
  • 2. 解题

1. 题目

有 N 种物品和一个容量是 V 的背包。

第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。

输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。

接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。

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

数据范围
0<N,V≤100
0<vi,wi,si≤100

输入样例
4 5
1 2 3
2 4 1
3 4 3
4 5 2
输出样例:
10

题目来源:https://www.acwing.com/problem/content/description/4/

2. 解题

  • dp[v] 表示体积为 v 时装的最大价值
  • 时间复杂度 O(NVS)O(NVS)O(NVS),空间复杂度 O(V)O(V)O(V)
#include<bits/stdc++.h>
using namespace std;int main()
{int N, V, vi, wi, si, maxprice = 0;cin >> N >> V;vector<int> dp(V+1, -1);dp[0] = 0;// dp[v] 表示体积为 v 时装的最大价值for(int i = 0; i < N; ++i){cin >> vi >> wi >> si;vector<int> temp(V+1, -1);for(int j = 0; j <= V; ++j){if(dp[j] == -1)//状态不存在continue;for(int s = 0; s <= si; ++s){   //当前的物品可以拿 s 次if(j+s*vi > V)//体积超了,不行break;temp[j+s*vi] = max(temp[j+s*vi], dp[j]+s*wi);maxprice = max(maxprice, temp[j+s*vi]);}}swap(dp, temp);}cout << maxprice << endl;return 0;
}

18 ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

ACwing 4. 多重背包问题 I(DP)相关推荐

  1. ACwing 5. 多重背包问题 II(二进制拆分+DP)

    文章目录 1. 题目 2. 解题 1. 题目 有 N 种物品和一个容量是 V 的背包. 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使物品体积总和不超过 ...

  2. ACwing 3. 完全背包问题(DP)

    文章目录 1. 题目 2. 解题 1. 题目 有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用. 第 i 种物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体 ...

  3. ACwing 2. 01背包问题(DP)

    文章目录 1. 题目 2. 解题 1. 题目 有 N 件物品和一个容量是 V 的背包.每件物品只能使用一次. 第 i 件物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积 ...

  4. AcWing 5. 多重背包问题 II(二进制优化)

    题目链接 https://www.acwing.com/problem/content/5/ 思路 part1 受了完全背包和01背包的启发我们不难想到,一种高效的方法来优化,我们讲物品的次数做一个二 ...

  5. AcWing 4. 多重背包问题(多重背包 朴素版)

    题目链接 https://www.acwing.com/problem/content/4/ 思路 对于每一个物品我们在选择的时候是有限制的,所以我们进行选择的时候需要枚举一下可以选择的情况,注意的是 ...

  6. 动态规划:多重背包问题

    一.多重背包问题1 ACwing 4.多重背包问题I 一.状态表示 f[i][j],表示从前i个物品当中选,总体积不超过j的选法,求解的是最大值 二.集合划分 f[i][j]根据第i见物品选择的数量进 ...

  7. poj 1384 Piggy-Bank 多重背包问题

    题目:点击打开链接 题意:小猪存钱罐,知道一些钱币的总重量,和这些钱币的币值以及单个重量,问这些钱最少是多少? 分析:很明显的一道多重背包问题,dp[v],表示重量为i的钱的币值和,对于达不到给定那个 ...

  8. 多重背包问题以及二进制优化

    2020.12.30开始学习AcWing算法<算法竞赛进阶指南>: 上传博客方便复习. 多重背包问题(N<= 100): //Wecccccccc //2020.12.31 #inc ...

  9. P03: 多重背包问题

    P03: 多重背包问题 题目 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和 ...

最新文章

  1. 统计数据库中所有表的基本信息
  2. 使用Xpand XAF创建项目产生Quartz错误的解决方法
  3. SAP S/4HANA extensibility扩展原理介绍
  4. python中的参数函数_python中函数与参数的简介
  5. 0x80070659系统策略禁止这个安装_教你如何将电脑C盘设置成禁止安装任何软件
  6. JavaScript重难点解析1(数据类型——var、let、const区别,类型补充,“===”、“typeof”、“instanceof”区别,Symbol数据类型)
  7. c语言中row和col的意思,这段c代码的含义时什么,怎么理解?
  8. Python 代码覆盖率统计工具 coverage.py
  9. 1039. 到底买不买(20)-PAT乙级真题
  10. java虚拟机(八)--java性能监控与故障处理工具
  11. python表格控件_tkinter 控件 Treeview 表格数据
  12. java自动化测试之开发工具eclipse安装配置
  13. Github emoji 表情包大全
  14. asp毕业设计——基于asp+access的工资管理系统设计与实现(毕业论文+程序源码)——工资管理系统
  15. 一起学爬虫(Python) — 07
  16. 不已0开头的数字正则
  17. Oblog最新注入漏洞分析
  18. python金融基础知识_python金融实务从入门到精通(23节课)
  19. 大学计算机长文档排版教学视频教程,大学计算机基础中Word长文档排版的教学思考...
  20. py.test --pep8 vsearch.py报错解决办法

热门文章

  1. 快速傅里叶变换python_FFT快速傅里叶变换的python实现过程解析
  2. excel合并两列内容_还在为合并WPS表格(Excel)中两列内容而犯愁?此方法简单高效...
  3. 【python】Flask视图
  4. 宏定义函数container_of的解释
  5. 新高考不选物理可以学计算机吗,新高考选科中物理真的那么重要吗?没有选物理是不是完了?...
  6. 5类6类7类网线对比_孩子们长高的黄金时期是从3月到5月,这阶段多吃6类食物长得快...
  7. WPF 开源项目 【watcher】 守望者,一款监控,统计,分析你每天在自己电脑上究竟干了什么的软件...
  8. java gui 连接mysql数据库
  9. CSS常用的元素居中方法
  10. Java 配置maven及阿里云镜像