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

力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I

给你一个整数数组 rewardValues,长度为 n,代表奖励的值。

最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 

  • 从区间 [0, n - 1] 中选择一个 未标记 的下标 i
  • 如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并 标记 下标 i

以整数形式返回执行最优操作能够获得的 最大 总奖励。

这题目其实是个非常明显的背包问题,只不过是稍微改了一下的0-1背包问题,所以很明显是个动态规划(dp)题,但可惜我太久没写题目了,已经不会dp了。(不,明明是因为晚上的时候脑子不清醒转不动

最后是稍微借助了一下题目下方的提示才写出来的。

dp嘛,能找到状态转移方程,题目就算解决一半了,所以重点在于我们的状态转移方程要怎么确定。

我们可以设计dp[i][j]=1表示我们有 i 个物品,可以获得 j 的奖励。那么,最后要求的就是dp[n-1]那一行最大的满足dp[n-1][j]=1的 j 。

那dp[i-1]怎么的值要怎么转移到dp[i]呢?如果我们不选第i个物品,那肯定dp[i]=dp[i-1]。而如果我们要选第i个物品呢?我们知道,只有手上的奖励值比rewardValues[i]

的值小的时候,我们才可以

选择

首先,因为这个题只需要求最大的总奖励,对具体选的物品编号没有要求,所以我们完全可以先排个序,而且排序之后也可以更方便进行选择。

然后,因为每次选择的奖励值必须大于你手上的奖励值,所以我们绝对不可能选择两个奖励值一样的物品,所以我们可以对输入数据进行一次去重。

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

相关文章:

  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
  • 2024.10月22日- MySql的 补充知识点
  • Java中的对象——生命周期详解
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 第 6 章 机器人系统仿真
  • 爬虫——scrapy的基本使用
  • 聚类分析算法——K-means聚类 详解
  • 【Sublime Text】设置中文 最新最详细
  • C++学习路线(二十四)
  • MySQL-存储过程/函数/触发器
  • 前端页面样式没效果?没应用上?
  • 05.MyISAM主键和二级索引树
  • Mac apache配置cgi环境-修改httpd.conf文件、启动apache
  • 多厂商的实现不同vlan间通信
  • sh与bash的区别
  • D48【python 接口自动化学习】- python基础之类
  • PostgreSQL(WINDOWS)下载、安装、简单使用
  • Git的初次使用
  • rocketmq服务的docker启动和配置
  • BLE和经典蓝牙相比,有什么优缺点
  • ECharts图表图例知识点小结
  • LabVIEW非接触式模态参数识别系统开发
  • 厨艺爱好者的在线家园:基于Spring Boot的实现
  • PostgreSQL使用clickhouse_fdw访问ClickHouse
  • docker 单节点arm架构服务器安装zookeeper、kafka并测试通信
  • AnaTraf | 全面掌握网络健康状态:全流量的分布式网络性能监测系统
  • 单片机入门教程
  • 三维管线管网建模工具MagicPipe3D V3.5.3
  • (二十三)、k8s(minikube) 部署mysql