A70700 | 环游世界之背包问题
来源编程题
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
张老师准备环游世界,出发之前要做的最重要的事情,当然是整理自己的背包啦。张老师有一个容积为m的背包 ,有n个物品作为放入背包的待选物品 ,每样东西都有自己的价值Wi,和体积Vi ,第i个物品有Ni个 (Ni=0时表示有无限多个),请你编程帮助张老师计算,他的背包能够存入的最大价值是多少?
30\%数据满足 1 <= m,n <=1000
100\%数据满足 1 <=m,n <= 10000
输入格式
第1行有2个整数N,M,表示物品的种类和背包的容积;
第2-N+1行,每行有3个整数Vi,Wi,Pi,分别表示每个物品的体积,价值,个数。(体积<=5000,价值<=5000,个数<=1000)
输出格式
一个整数,表示能够存入背包的最大价值。
输入输出样例
输入 #1
5 50 1 1 50 2 4 3 48 49 1 1 51 1 3 3 3
输出 #1
106
思路
背包 DP:状态为容量(及物品),转移为选或不选当前物品。
步骤
1. 读入容量与物品体积/价值。
2. 按 01 或完全背包的循环顺序填 dp。
3. 输出最大价值或方案数。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?