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

AcWing 4:多重背包问题 I ← 规模小时可转化为0-1背包问题

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

【题目描述】
有 N 种物品和一个容量是 V 的背包。
第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。

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

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

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

【算法分析】
● 背包问题,求解的是“某些种物品装入背包,......”,而不是求解“某些个物品装入背包,......”的问题。切记。
多重背包问题,每种物品有有限多个;完全背包问题,每种物品有无限多个;0-1背包问题,每种物品只有一个。

● 多重背包问题:有 n 种物品和一个容量为 V 的背包。第 i 种物品有固定体积 vol[i]、固定价值 val[i],并且最多可以选取 k[i] 件。在总体积不超过背包容量的前提下,选择若干件物品,使得总价值最大

● 经典解法:在数据规模不大(≤100)的前提下,可将多重背包中的第 i 种物品按照其最大可选取数量,拆分为若干个相互独立、属性完全一致的单件物品。这样一来,原来的多重背包问题,就变成了每个物品只能选或不选的 0/1 背包问题,可以直接用 0/1 背包的方法求解。示意图如下所示:

多重背包问题I

切记,“暴力拆分”的方法只适用于问题规模不大(n≤100)的多重背包问题。若问题规模较大,必然会TLE。因此,对于问题规模较大的多重背包问题,就需要进行二进制优化。
实例详见:https://blog.csdn.net/hnjzsyjyj/article/details/109363826

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=105;
int f[maxn];int val,vol,cnt;
int main() {int n,v;cin>>n>>v;for(int k=1; k<=n; k++) {cin>>vol>>val>>cnt;for(int i=1; i<=cnt; i++)for(int j=v; j>=vol; j--)f[j]=max(f[j],f[j-vol]+val);}cout<<f[v];return 0;
}/*
in:
4 5
1 2 3
2 4 1
3 4 3
4 5 2out:
10
*/



【参考文献】
https://www.acwing.com/problem/content/4/
https://blog.csdn.net/hnjzsyjyj/article/details/109363826
https://www.acwing.com/problem/content/solution/4/1/

http://www.jsqmd.com/news/492527/

相关文章:

  • AI修图师效果实测:指令执行精准度全面评测
  • 关于JavaScript代码-最简单的写法和执行方式
  • Z-Image-Turbo-辉夜巫女实操手册:从CSDN镜像拉取到生成第一张辉夜巫女图完整步骤
  • DJM里现:用可视化数据破局,打造医美机构一站式业绩增长引擎 - 资讯焦点
  • Z-Image-Turbo-rinaiqiao-huiyewunv 长文本生成效果:万字小说连贯性与角色一致性测评
  • Linux系统下Docker代理配置与镜像配置
  • Markdown党必看!用VS Code+插件实现Typora同款标题自动序号
  • 小程序商城哪个平台好?码云数智、有赞、微盟各自特色 - 码云数智
  • GeographicLib避坑指南:SLAM项目中如何正确使用C++进行地理坐标转换
  • 手把手教你用Cadence Virtuoso完成LNA全套仿真:基于SpectreRF手册的实战补充
  • RimSort:智能模组编排系统如何重构《边缘世界》玩家体验
  • Phi-3-vision-128k-instructGPU算力优化教程:vLLM量化部署降低显存占用40%
  • TranslateGemma部署避坑指南:常见CUDA错误解决方法大全
  • OAuth 2026不是升级,是重构!MCP生态下PKCE+DPoP+Token Binding三重加固实测报告,延迟部署=高危漏洞敞口
  • Qwen3-14b_int4_awq部署优化:vLLM动态批处理(dynamic batching)配置详解
  • GLM-4v-9b部署教程:支持LoRA微调接口,适配垂直领域视觉问答任务
  • Qwen3-14B企业应用案例:用vLLM+Chainlit部署Qwen3-14b_int4_awq做客服话术生成
  • Unity模型管理神器:用预制体自动生成预览图的完整流程(含GitHub Demo)
  • CCMusic Dashboard实战手册:CCMusic+Whisper联合流水线——语音内容+背景音乐双轨分析
  • 5个步骤掌握智能压枪技术:从入门到专业的logitech-pubg完全指南
  • SNMPv3配置避坑指南:如何用snmp4j实现企业级安全监控
  • MiniCPM-V-2_6生成学术图表:集成LaTeX的科研论文自动化配图方案
  • 从内核到应用层:全面解析安卓系统中dmesg和logcat的工作原理与区别
  • 不用写代码!用FastGPT训练专属客服知识库(支持抖音/拼多多/京东多平台)
  • 机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)
  • Web渗透实战:冰蝎工具连接一句话木马完整指南(2024最新版)
  • Vue项目避坑指南:Element-ui+SortableJS拖拽排序的那些常见问题
  • 告别多窗口直播:5步实现全平台同步推流的高效方案
  • Phi-3-vision-128k-instruct部署案例:基于vLLM的轻量多模态模型镜像免配置实践
  • Python实战:5分钟搞定抖音直播间弹幕抓取(附完整代码)