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

背包问题(包括路径统计)

码蹄集OJ-赶deadline

#include<bits/stdc++.h> 
using namespace std;
const int N=1e4+1;
int n,T;
int v[N],w[N],dp[N],path[N][N],cnt[N];
int main( )
{cin>>n>>T;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];}for(int i=1;i<=n;i++){for(int j=T;j>=w[i];j--){if(dp[j-w[i]]+v[i]>dp[j]){dp[j]=dp[j-w[i]]+v[i];path[i][j]=1;}}}cout<<dp[T]<<endl;int i=n;int j=T;int ans=0;while(i>=1&&j){if(path[i][j]){cnt[ans++]=i;j-=w[i];}i--;}for(int i=ans-1;i>=0;i--){cout<<cnt[i]<<" ";}return 0;
}

01背包问题,将时间看作背包能装的最大重量,将重要度看作物品价值。这道题需要额外统计出取的物品的路径,所以不能直接得取与不取之间的最大值,需要在取物品时将路径数组path变为1,这样数组中值为一的就是选取的物。接下来遍历重量与价值,将取得物的编号统计在cnt数组中,最后遍历cnt数组。

http://www.lryc.cn/news/589257.html

相关文章:

  • zynq分频的例子
  • HTML的重要知识
  • 自己训练大模型?MiniMind 全流程解析 (一) 预训练
  • Vue框架之模板语法(插值表达式、指令系统、事件处理和表单绑定)全面解析
  • 代码随想录Day21:二叉树(修剪二叉搜索树、将有序数组转换为二叉搜索树、把二叉搜索树转换为累加树——全递归版本以及总结)
  • JavaDemo——使用CGLIB动态代理
  • 46. 携带研究材料(01背包二维数组)
  • (李宏毅)deep learning(五)--learning rate
  • Spring应用抛出NoHandlerFoundException、全局异常处理、日志级别
  • 游戏加速器核心技术:动态超发
  • Postman + Newman + Jenkins 接口自动化测试
  • 【PTA数据结构 | C语言版】二叉树层序序列化
  • MYSQL练习2
  • UVM(1)—配置环境
  • 3分钟搞定!用ChatGPT+工具生成流程图超简单(附提示词)
  • 基于 AI 的大前端安全态势感知与应急响应体系建设
  • 证明在赋范线性空间中,如果一个闭子空间内的点列弱收敛于空间中的一个点,那么这个点也必然属于该闭子空间
  • 稳定细胞系构建|蛋白表达细胞株|高表达细胞株
  • 备忘录设计模式
  • Python+Selenium自动化爬取携程动态加载游记
  • MIPI DSI(四) video 和 command 模式
  • MySQL数学函数
  • 【STM32项目】环境监测设计
  • QML视图与代理控件
  • Spring Boot全局异常处理:打造坚如磐石的应用防线
  • 【Java代码审计(2)】MyBatis XML 注入审计
  • Datawhale AI夏令营 机器学习2.1
  • AWS中国区资源成本优化全面指南:从理论到实践
  • 从零开始的python学习(八)P115+P116+P117+P118+P119+P120+P121+P122
  • 第十三讲 | map和set的使用