力扣每日一题 超级饮料的最大强化能量 动态规划(dp)

来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。

你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到另一种,你需要等待一小时来梳理身体的能量体系(在那个小时里你将不会获得任何强化能量)。

返回在接下来的 n 小时内你能获得的 最大 总强化能量。

注意 你可以选择从饮用任意一种能量饮料开始。  

示例 1: 输入:energyDrinkA = [1,3,1], energyDrinkB = [3,1,1] 输出:5

解释: 要想获得 5 点强化能量,需要选择只饮用能量饮料 A(或者只饮用 B)。

示例 2: 输入:energyDrinkA = [4,1,1], energyDrinkB = [1,1,3] 输出:7

解释:

• 第一个小时饮用能量饮料 A。

• 切换到能量饮料 B ,在第二个小时无法获得强化能量。

• 第三个小时饮用能量饮料 B ,并获得强化能量。   

 思路

这题题目描述有点不明确,概括一下题意就是有有两个饮料序列,分别代表饮料在1-n小时的能量值,开始时可以选择任意一种饮料饮用,每个小时只能选择一瓶饮料引用,如果你刚开始选的是第一种饮料,后面想要喝第二种饮料的话就需要等待一小时,即下一个小时无法饮用任何饮料,求第n小时过后能获得多少能量

题目中提到了如果要切换饮料种类就需要空等一小时,如果按照贪心的策略想的话这肯定是不合理的,所以这题不能用贪心解,所以当我们决定切换饮料,一定是我们可以获得更大收益的,这两天正好在学习dp,一瞬间就想到改用dp来解

设置数组 

long[][] dp=new long[n+1][2];

dp[i][0]代表第i时刻选择饮料A所能获得的最大能量

dp[i][1]代表第i时刻选择饮料B所能获得的最大能量

假设当前选择能量A又有两种两种可能

1.前一次选择的也是能量A  即 dp[i][0]= dp[i-1][0]  + energyDrinkA[i]

2.前一次选的是能量B         则 dp[i][0]= dp[i-2][1]   + energyDrinkA[i];

两者之中取较大值,可得

 dp[i][0]=Math.max(dp[i-1][0],dp[i-2][1])+energyDrinkA[i];

同理,饮料B的递推公式  dp[i][1]=Math.max(  dp[i-1][1] ,  dp[i-2][0] ) +  energyDrinkB[i];

初始化

        dp[0][0]=energyDrinkA[0];dp[0][1]=energyDrinkB[0];dp[1][0]=dp[0][0]+energyDrinkA[1];dp[1][1]=dp[0][1]+energyDrinkB[1];

下标为0的就是第一次喝饮料,直接取第一个饮料的能量即可

对于第二次选择,由于饮料的种类转移需要花费一个小时的时间,而前两次仅仅只有两个小时的时间,转移饮料种类无法获得任何能量,只会浪费第二个小时的时间,所以前两次都喝相同的饮料

 完整代码

class Solution {public long maxEnergyBoost(int[] energyDrinkA, int[] energyDrinkB) {int n=energyDrinkA.length;long[][] dp=new long[n+1][2];dp[0][0]=energyDrinkA[0];dp[0][1]=energyDrinkB[0];dp[1][0]=dp[0][0]+energyDrinkA[1];dp[1][1]=dp[0][1]+energyDrinkB[1];for(int i=2;i<n;i++){dp[i][0]=Math.max(dp[i-1][0],dp[i-2][1])+energyDrinkA[i];dp[i][1]=Math.max(dp[i-1][1],dp[i-2][0])+energyDrinkB[i];}return Math.max(dp[n-1][0],dp[n-1][1]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3981.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568平台开发系列讲解(字符设备驱动篇)注册字符设备

🚀返回专栏总目录 文章目录 一、字符设备初始化二、字符设备的注册和注销沉淀、分享、成长,让自己和他人都能有所收获!😄 📢注册字符设备可以分为两个步骤: 字符设备初始化字符设备的添加一、字符设备初始化 字符设备初始化所用到的函数为 cdev_init(…),在对该函数讲…

在 Scnet 上微调 Stable Diffusion 3 模型

1 AI 算力反馈 1.1 运行的商品名称 我运行的商品为 Stable Diffusion 3 文本到图像高质量生成AI绘画推理服务&#xff0c;运行的环境为 异构加速卡AI 64G。具体创建流程如下&#xff1a; 1.1.1 购买模型服务 首先购买一下模型服务&#xff0c;这样我们就不需要再从 Hugging…

ffmpeg命令——从wireshark包中的rtp包中分离h264

ffmpeg命令——从wireshark包中的rtp包中分离h264 过滤 RTP打开wireshark的RTP 播放器选中流并导出荷载使用 ffmpeg 命令行分离出 h264 过滤 RTP 打开wireshark的RTP 播放器 选中流并导出荷载 使用 ffmpeg 命令行分离出 h264 ffmpeg -i test.raw -vcodec copy -an -f h264 tes…

机器学习(二)——线性回归模型、多分类学习(附核心思想和Python实现源码)

目录 关于1. 基本形式2. 线性回归2.1 单变量线性回归2.2 多元线性回归2.2 对数线性回归 3. 对数几率回归4. 线性判别分析5. 多分类学习5.1 拆分策略 6. 类别不平衡问题X 案例代码X.1 源码X.2 数据集&#xff08;糖尿病数据集&#xff09;X.3 模型效果 关于 本文是基于西瓜书&a…

【机器学习】22. 聚类cluster - K-means

聚类cluster - K-means 1. 定义2. 测量数据点之间的相似性3. Centroid and medoid4. Cluster之间距离的测量方式5. 聚类算法的类别6. K-mean7. 如何解决中心初始化带来的影响8. K-means问题&#xff1a;处理空集群9. 离群值的问题10. Bisecting K-means&#xff08;二分K-means…

【python_pandas_将列表按照某几列进行分组,再求和,按照原列表的字段顺序返回】

说明&#xff1a; 1、按照[“行描述”,”‘公司代码’, ‘科目代码’, ‘预算项目代码’] 进行分组。 2、对“贷方”列进行求和。 3、最后按照之前的表头顺序进行排序&#xff0c;返回结果列表。 #-*- coding:utf-8-*import pandas as pd def consolidate_salary_provisions(l…

【Vue框架】基础语法练习(1)

其实更多知识点已经在Vue.js官网十分清楚了&#xff0c;大家也可以去官网进行更细节的学习 https://cn.vuejs.org/ 说明&#xff1a;目前最新是Vue3版本的&#xff0c;但是Vue2已经深得人心&#xff0c;所以就是可以支持二者合用。它们最大的区别就是Vue3是组合式API&#xf…

公司如何防止员工泄密?十佳措施拒绝泄密,公司防泄密刻不容缓! (2024最强科普)

如何有效防止员工泄露机密&#xff1f; 作为公司的经营者&#xff0c;您是否意识到了商业秘密的重要性&#xff1f;您是否已经知道应该采取什么样的措施才能保护好自己的商业秘密&#xff1f; 员工的泄密行为不仅可能造成重大的经济损失&#xff0c;还会对企业的声誉造成严重…

[大模型]视频生成-Sora简析

参考资料&#xff1a; Sora技术报告https://openai.com/index/video-generation-models-as-world-simulators/4分钟详细揭密&#xff01;Sora视频生成模型原理https://www.bilibili.com/video/BV1AW421K7Ut 一、概述 相较于Gen-2、Stable Diffusion、Pika等生成模型的前辈&am…

linux中级(防火墙firewalld)

一。firewalld与iptables区别1.firewalld可以动态修改单条规则&#xff0c;不需要像iptables那样&#xff0c;修改规则后必须全部刷新才可生效。firewalld默认动作是拒绝&#xff0c;则每个服务都需要去设置才能放行&#xff0c;而iptables里默认是每个服务是允许&#xff0c;需…

【C/C++】memcpy函数的使用

零.导言 当我们学习了strcpy和strncpy函数后&#xff0c;也许会疑惑整形数组要如何拷贝&#xff0c;而今天我将讲解的memcpy函数便可以拷贝整形数组。 一.memcpy函数的使用 memcpy函数是一种C语言内存函数&#xff0c;可以按字节拷贝任意类型的数组&#xff0c;比如整形数组。 …

软件测试用例设计:从功能测试到边界值分析

功能测试介绍 功能测试是软件测试的一种重要方式&#xff0c;通过对软件的功能进行测试&#xff0c;来验证软件是否满足需求规格说明书中的各项功能要求。例如&#xff0c;对于一个简单的计算器软件&#xff0c;功能测试的用例可能包括加减乘除等基本运算&#xff0c;以及各种特…

[论文阅读]BERT-based Lexical Substitution

BERT-based Lexical Substitution 基于BERT的词汇替换 ACL2019 BERT-based Lexical Substitution - ACL Anthology 以前关于词汇替换的研究倾向于通过从词汇资源&#xff08;例如 WordNet&#xff09;中找到目标词的同义词来获得替代候选词&#xff0c;然后根据其上下文对候…

【Java SE 】特殊报错机制 ---> 异常 !

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 异常概念 1.1 算术异常 1.2. 空指针异常 1.3 数组越界异常 2. 异常的分类 2.1 编译时产生的异常 2.2 运行时产生的异常 3. 如何处理异常 3.1 异常…

使用kettle同步数据流程

使用kettle同步数据流程 一&#xff0e;Kettle软件安装&#xff08;解压即可使用&#xff09; 1.windows安装解压 pdi-ce-8.2.0.0-342.zip&#xff0c;点Spoon.bat启动kettle 2.Linux安装 把data-integration目录所有文件上传到服务器 二&#xff0e;安装数据库驱动把需要的…

两级运放的电路版图设计

电路版图文件PDK&#xff0c;88出&#xff0c;点击此处获取&#xff0c;24h秒发 PDF文件免费&#xff0c;已绑定 《集成电路版图设计课程》 课程设计&#xff08;大作业&#xff09;报告 2023 - 2024 学年第 1 学期 题 目 CMOS运算放大器的电路设计 专 业 …

Windows不支持配置NFS?还有什么注意事项?

我们前面介绍了如果配置Windows Server的NFS共享&#xff08;Windows Server2012 R2搭建NFS服务器&#xff09;&#xff0c;也介绍了Linux如何配置NFS共享&#xff08;CentOS 7搭建NFS服务器&#xff09;。但是&#xff0c;我最近发现一个问题&#xff0c;那就是桌面版的Window…

解锁测试能力密码:直击三问,成就卓越测试

在测试人眼中真的是“万物皆可测”&#xff0c;不管是物体&#xff08;铅笔&#xff0c;桌子&#xff09;、终端&#xff08;手机&#xff0c;电脑&#xff09;、软件代码、硬件设备等等。那是因为在底层逻辑中&#xff0c;我们搞清楚了其核心本质&#xff0c;总结起来有三个方…

AutoCAD2021

链接: https://pan.baidu.com/s/1GG93ZFRfV_30xTWtDiv3Ew 提取码: dx8i 简介&#xff1a;一键安装&#xff0c;已经破解。支持W7-w10-w11系统64位

伍光和《自然地理学》电子书(含考研真题、课后习题、章节题库、模拟试题)

《自然地理学》&#xff08;第4版&#xff09;由伍光和、王乃昂、胡双熙、田连恕、张建明合著&#xff0c;于2018年11月出版。作为普通高等教育“十一五”国家级规划教材&#xff0c;本书不仅适用于高校地球科学各专业的基础课程&#xff0c;还可供环境、生态等有关科研、教学人…