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

洛谷 P1757:通天之分组背包

【题目来源】
https://www.luogu.com.cn/problem/P1757

【题目描述】
自 01 背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 背包,他的物品大致可分为 k 组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。

【输入格式】
两个数 m,n,表示一共有 n 件物品,背包能承受的最大重量为 m。
接下来 n 行,每行 3 个数 ai​,bi​,ci​,表示物品的重量,利用价值,所属组数。

【输出格式】
一个数,最大的利用价值。

【输入样例】
45 3
10 10 1
10 5 1
50 400 2

【输出样例】
10

【数据范围】
0≤m≤1000,1≤n≤1000,1≤k≤100,
ai,bi,ci 在 int 范围内。

【算法分析】
因为每组最多选择一个物品,所以可以将每组都看作一个整体,这就类似于 0/1 背包问题。
● 令 f[i][j] 表示将前 i 组物品放入容量为 j 的背包中可以获得的最大价值,vol[i][k] 表示第 i 组第 k 个物品的体积,val[i][k] 表示第 i 组第 k 个物品的价值,cnt[i] 表示第 i 组物品的个数,则分组背包问题的状态转移方程为:f[i][j]=max(f[i-1][j], f[i-1][j-vol[i][k]]+val[i][k]), j>=vol[i][k]
● 与 0/1 背包问题一样,可以对分组背包问题二维实现的状态转移方程进行一维数组优化,可得:
f[j]=max(f[j], f[j-vol[i][k]]+val[i][k])
其中,f[j] 表示将物品放入容量为 j 的背包中可以获得的最大价值。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int M=1e2+5;
const int N=1e3+5;
int vol[M][N],val[M][N],cnt[M];
int f[N];
int mx; //Maximum group number
int V,n,a,b,c;int main() {cin>>V>>n;for(int i=1; i<=n; i++) {cin>>a>>b>>c;cnt[c]++;vol[c][cnt[c]]=a;val[c][cnt[c]]=b;mx=max(mx,c);}for(int i=1; i<=mx; i++) {for(int j=V; j>=0; j--) {for(int k=1; k<=cnt[i]; k++) {if(j>=vol[i][k]) {f[j]=max(f[j],f[j-vol[i][k]]+val[i][k]);}}}}cout<<f[V]<<endl;return 0;
}/*
in:
45 3
10 10 1
10 5 1
50 400 2out:
10
*/





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/126202821
https://www.cnblogs.com/zbtrs/p/7485110.html
https://blog.csdn.net/m0_75175825/article/details/146893476

 

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

相关文章:

  • 基于Python的物流管理系统毕业设计
  • 基于COMSOL的冻土路基水热耦合变形模拟研究:多因素影响下的响应与变化分析
  • Guohua Diffusion 模型压缩与加速实践:在边缘设备上的部署尝试
  • 2026学化妆哪家机构强?教育博主实测盘点,零基础小白直接抄作业 - 品牌测评鉴赏家
  • 统信UOS离线环境实战:5分钟搞定telnet安装(附ARM64/AMD64双架构deb包)
  • 基于Python的篮球联盟管理系统毕设
  • 自动控制原理在现代工业中的应用与优化策略
  • ENSP与VMware虚拟机互通全攻略:解决网络实验中的常见连接问题
  • 从数据到洞察:如何用Python分析这份2023自然保护区数据,发现生态保护热点?
  • 微电网分层控制与二次控制:顶刊复现的事件触发控制图与模型
  • 从最大子数组和问题看线段树:原理与实现
  • 深入AgentScope源码:如何自定义Agent与Qwen模型的高效交互
  • 北京上门收酒,老酒变现怕压价?京城亚南酒业童叟无欺口碑好 - 品牌排行榜单
  • Python玩转ZLG CAN:从DLL配置到数据收发的完整实战指南
  • 解锁Gogeo:Go语言GIS空间分析库的高性能实战指南
  • 网站突然无法访问?可能是反诈拦截!3个自查步骤+安全加固方案
  • 为什么90%的MCP跨语言调用会偶发“UnknownError: code=12”?——基于Wireshark+eBPF的协议栈级深度溯源
  • 【音效算法】从Schroeder到Freeverb:经典混响算法的演进与实现
  • 【限时解密】Dify私有化部署性能调优内参(仅面向已通过Dify Enterprise Partner认证的技术负责人)
  • 美妆小白必看!扒一扒那些超棒的化妆培训学校 - 品牌测评鉴赏家
  • 阿里通义实验室FunAudioLLM实战:如何用SenseVoice快速搭建多语言语音识别系统(附避坑指南)
  • 美妆博主实测|6家优质化妆学校排行,新手择校不踩坑(纯干货) - 品牌测评鉴赏家
  • 避坑指南:CNN-LSTM模型在数据回归预测中的5个常见错误及解决方案
  • 从‘fixVia’到‘fillNotch’:我在Innovus里搞定Signal Net Min Step DRC的完整踩坑记录
  • 探索十二扇区异步电机直接转矩控制(DTC)的改进之旅
  • 后缀自动机(SAM)
  • 《如何高效提升提示系统可靠性与效率?提示工程架构师有话说》
  • 嵌入式C多核性能天花板突破实录(仅限芯片原厂FAE内部文档解密):绕过CMSIS标准库,直驱GICv3中断分发器实现核间唤醒延迟<83ns
  • web后端----oatpp临时笔记
  • Ant Download Manager Pro v2.16.8 蚂蚁下载器便携版 高速下载神器