信息学奥赛一本通 1272:【例9.16】分组背包

发布时间:2026/10/18 1:12:04

信息学奥赛一本通 1272:【例9.16】分组背包 【题目链接】ybt 1272【例9.16】分组背包【题目考点】1. 动态规划分组背包【解题思路】分组背包问题特点是每组中的物品最多可以取一件1. 状态定义集合放入背包的物品方案限制物品所在分组的区间背包大小属性价值条件最大统计量价值状态定义dp[i][j]: 在前i组物品中选择物品放入大小为j的背包能获得的最大价值。2. 状态转移方程记第i组物品有m个这m个物品的编号为i1,i2,…,im。第i物品的重量是w[i]价值是c[i]。集合在前i组物品中选择物品放入大小为j的背包的所有方案分割集合第i组物品如何放入背包如果不选择第i组物品那么在剩余i-1组中选择物品放入大小为j的背包。dp[i][j] dp[i-1][j]如果选择第i组物品中的第1个该物品下标为i1。那么需要在剩余i-1组中选择物品放入大小为j-w[i1]的背包。dp[i][j] dp[i-1][j-w[i1]]c[i1]如果选择第i组物品中的第2个该物品下标为i2。那么需要在剩余i-1组中选择物品放入大小为j-w[i2]的背包。dp[i][j] dp[i-1][j-w[i2]]c[i2]…如果选择第i组物品中的第m个该物品下标为im。那么需要在剩余i-1组中选择物品放入大小为j-w[im]的背包。dp[i][j] dp[i-1][j-w[im]]c[im]一般地如果选择第i组物品中的第k个该物品下标为x。那么需要在剩余i-1组中选择物品放入大小为j-w[x]的背包。dp[i][j] dp[i-1][j-w[x]]c[x]。遍历第i组物品求选择该组中每个物品后能得到的最大价值dp[i][j]。以上所有情况求最大值。3. 复杂度分析背包容量为V物品总数量为N分组数量为T。分组背包一般解法时间复杂度O ( V N ) O(VN)O(VN)空间复杂度O ( T V ) O(TV)O(TV)滚动数组优化后空间复杂度O ( V ) O(V)O(V)【题解代码】解法1分组背包 一般解法#includebits/stdc.husingnamespacestd;#defineV205#defineN35#defineT15intdp[T][V],w[N],c[N];//dp[i][j]:在前i组物品中选择物品放入大小为j的背包能获得的最大价值。vectorintg[T];//g[i]:存储第i组物品的编号intmain(){intv,n,t,p;cinvnt;for(inti1;in;i){cinw[i]c[i]p;g[p].push_back(i);//第p组添加i}for(inti1;it;i)//遍历各组{for(intj0;jv;j){dp[i][j]dp[i-1][j];for(intk0;kg[i].size();k){intxg[i][k];if(w[x]j)dp[i][j]max(dp[i][j],dp[i-1][j-w[x]]c[x]);}}}coutdp[t][v];return0;}解法2分组背包 滚动数组优化#includebits/stdc.husingnamespacestd;#defineV205#defineN35#defineT15intdp[V],w[N],c[N];//dp[i][j]:第1维被优化掉在前i组物品中选择物品放入大小为j的背包能获得的最大价值。vectorintg[T];//g[i]:存储第i组物品的编号intmain(){intv,n,t,p;cinvnt;for(inti1;in;i){cinw[i]c[i]p;g[p].push_back(i);//第p组添加i}for(inti1;it;i)//遍历各组{for(intjv;j0;--j){for(intk0;kg[i].size();k){intxg[i][k];if(jw[x])dp[j]max(dp[j],dp[j-w[x]]c[x]);}}}coutdp[v];return0;}
延伸阅读

更多相关文章

2026/10/18 1:07:04

智能穿戴APP开发避坑指南:如何挑选靠谱服务商

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 1:07:04

ESP32+RC522零基础跑通RFID刷卡读卡全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:27:08

if-else 深度拆解:从执行机制到高效条件逻辑的工程实践

写代码这么多年,如果要我选一个“所有编程语言里最基础、最常用、又最容易写出烂代码”的语法,if-else绝对排得上号。它简单到连入门第一课都会讲,可真正写出清晰、健壮、不容易出 bug 的条件逻辑,新手和老手的差距一下就拉开了。…

2026/10/18 2:27:08

RV1126B NPU图像分类模型部署全流程实践与踩坑记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 2:22:08

无人机视角下YOLO目标检测与PyQt5界面开发实战

这个标题看着就像很多人正在做或准备做的方向:无人机视角下的目标检测,加上YOLO全家桶和PyQt5界面,等于一套能直接演示、能继续训练、能二次开发的完整工程。我去年正好完整走过一遍这个流程,从数据整理到训练调参,再到…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑