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

洛谷——P1048 [NOIP 2005 普及组] 采药

题目链接:洛谷——P1048 [NOIP 2005 普及组] 采药

经典01背包问题,也是左程云算法讲解073必备的第一题。本次提供两个版本代码。

递归+记忆化搜索

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;int dp[1005][105];
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv);int main() {int T, M;cin >> T >> M;// T表示总时间, M表示草药数目vector<int> mt(M);vector<int> mv(M);for (int i = 0; i < M; ++i) {cin >> mt[i] >> mv[i];}memset(dp, -1, sizeof(dp));cout << maxValue(T, 0, mt, mv) << endl;return 0;
}// 返回在总时间还剩t时,选择[i, m - 1]号药材的最大值
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv) {if (dp[t][i] != -1) {return dp[t][i];}if (i >= mt.size() || t <= 0) {dp[t][i] = 0;return 0;}if (t - mt[i] < 0) {dp[t][i] = maxValue(t, i + 1, mt, mv);return dp[t][i];}else {int res1 = maxValue(t - mt[i], i + 1, mt, mv) + mv[i];int res2 = maxValue(t, i + 1, mt, mv);dp[t][i] = max(res1, res2);return dp[t][i];}return -1;
}

动态规划

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;int dp[1005][105];
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv);int main() {int T, M;cin >> T >> M;// T表示总时间, M表示草药数目vector<int> mt(M);vector<int> mv(M);for (int i = 0; i < M; ++i) {cin >> mt[i] >> mv[i];}memset(dp, -1, sizeof(dp));//cout << maxValue(T, 0, mt, mv) << endl;for (int i = 0; i < M + 1; i++) {dp[0][i] = 0;}for (int i = 0; i < T + 1; ++i) {dp[i][M] = 0;}for (int i = M - 1; i >= 0; --i) {for (int t = 1; t < T + 1; ++t) {if (t < mt[i]) {dp[t][i] = dp[t][i + 1];}else {dp[t][i] = max(mv[i] + dp[t - mt[i]][i + 1], dp[t][i + 1]);}}}cout << dp[T][0] << endl;return 0;
}

参考图:

http://www.dtcms.com/a/313008.html

相关文章:

  • 【openlayers框架学习】九:openlayers中的交互类(select和draw)
  • GaussDB SQL执行计划详解
  • Rust: 获取 MAC 地址方法大全
  • Zama的使命
  • 【读论文】KAG-Thinker:升级版RAG 框架
  • 推荐系统学习笔记(九)曝光过滤 Bloom Filter
  • 【DL学习笔记】感受野(Receptive Field)
  • 映射网络驱动器后,重启映射就没了
  • 王之凝视 免安中文 离线运行版
  • 【Bluetooth】【Transport层篇】第四章 基于基础UART的蓝牙硬件发送协议 UART H4 Transport详解
  • wordpress登陆前登陆后显示不同的顶部菜单
  • 前后端交流
  • Go语言声明变量
  • mybatis实现固定三层树形结构的嵌套查询
  • 怎么修改论文格式呢?提供一份论文格式模板
  • 【ProtoBuf】初识ProtoBuf
  • 【UE5医学影像可视化】读取本地Dicom生成VolumeTexture,实现2D显示和自动翻页
  • 关于记录一下“bug”,在做图片上传的时候出现的小问题
  • B3953 [GESP202403 一级] 找因数
  • 大模型智能体(Agent)技术全景:架构演进、协作范式与应用前沿
  • Python Dash 全面讲解
  • 使用 Vuepress + GitHub Pages 搭建项目文档
  • io_getevents系统调用及示例
  • Android 之 图片加载(Fresco/Picasso/Glide)
  • 第四章:OSPF 协议
  • Docker环境离线安卓安装指南
  • Android 之 存储(Assets目录,SharedPreferences,数据库,内部存储等)
  • 音视频学习(五十):音频无损压缩
  • 使用 Docker 部署 Golang 程序
  • 计数组合学7.12( RSK算法的一些推论)