力扣每日一题 超级饮料的最大强化能量 动态规划(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.mzph.cn/diannao/58894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国产 V7 690T+FT6678 高性能实时信号处理平台设计原理

1、概述 全国产 V7 690TFT6678 高性能实时信号处理平台组成如图 1 所示&#xff0c;包含 1 片SMQ7VX690TFFG1761 和两片 FT-6678&#xff08;国防科大&#xff09;的 DSP&#xff0c;总共 3 个主芯片&#xff1b;每个主芯片外部各搭配 1 组 64bit 的 DDR3 内存模组以及各芯片启…

0.STM32F1移植到F0的各种经验总结

1.结构体的声明需放在函数的最前面 源代码&#xff1a; /*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //开启USART1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructu…

Linux高阶——1027—守护进程

1、守护进程的基本流程 1、父进程创建子进程&#xff0c;父进程退出 守护进程是孤儿进程&#xff0c;但是是工程师人为创建的孤儿进程&#xff0c;低开销模式运行&#xff0c;对系统没有压力 2、子进程&#xff08;守护进程&#xff09;脱离控制终端&#xff0c;创建新会话 …

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型&#xff08;Generative Language Models, GLMs&#xff09;在文本生成任务中取得了显著进展。然而&#xff0c;生成内容的“幻觉”现象&#xff0c;即生成内容与事实或真实语义不符的问题&#xff0c;仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

-bash: ./my_rename.sh: /bin/bash^M: bad interpreter: No such file or directory

在windows上写了一个shell脚本&#xff0c;在Linux上执行时报错&#xff0c;然后看下解决办法&#xff1a; 查了下&#xff0c;其实就是windows系统里文件行尾的换行符和Linux不同引起的&#xff0c; sed -i s/\r$// my.sh用这行代码处理一下&#xff0c;就可以正常运行了。 执…

flutter区别于vue的写法

View.dart 页面渲染&#xff1a; 类似于vue里面使用 <template> <div> <span> <textarea>等标签绘制页面, flutter 里面则是使用不同的控件来绘制页面 样式 与传统vue不同的是 flutter里面没有css/scss样式表&#xff0c; Flutter的理念是万物皆…

idea免费安装步骤,(java集成开发环境)超详细

第一步 点击链接下载 百度网盘 请输入提取码 提取码是idea 下载步骤 可设也可不设置 我就没有设置 下一步 就点击安装就大功告成了

SAP RFC 用户安全授权

一、SAP 通讯用户 对于RFC接口的用户&#xff0c;使用五种用户类型之一的“通讯”类型&#xff0c;这种类型的用户没有登陆SAPGUI的权限。 二、对调用的RFC授权 在通讯用户内部&#xff0c;权限对象&#xff1a;S_RFC中&#xff0c;限制进一步可以调用的RFC函数授权&#xff…

大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

计算机网络-总线型以太网(ethernet)-知识点小结

广域网与局域网区分: 广域网: 广域网不使用局域网技术, 传输介质 主要是光纤和电话线 常见广域网技术 综合业务数字网&#xff08;ISDN&#xff09;、 帧中继&#xff08;Frame Relay&#xff09;、 异步传输模式 局域网: 以太网--ethernet 简介: 是一种总线型局域网技术&#…

透明加密技术是什么?透明加密技术的原理与应用实践(内含代表性软件分享)

触目惊心&#xff01;10大典型间谍案例回顾 张某离职前搜集大量文件资料&#xff0c;甚至拆开电脑主机拷贝文件 私自存有5200份文件资料 其中标注绝密级的59份 机密级848份 秘密级541份 在当今这个信息化高速发展的时代&#xff0c;透明加密技术已不容忽视。那么&#xff…

C/C++ 每日一练:二叉树的先序遍历

二叉树 binary tree 定义 二叉树是一种树状数据结构&#xff0c;非线性数据结构&#xff0c;代表“祖先”与“后代”之间的派生关系&#xff0c;体现了“一分为二”的分治逻辑。与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;二叉树的每个节点包含三个主要部分&am…

OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/143432922 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

Unity程序化生成地形

制作地形&#xff1a; 绘制方块逐个绘制方块并加噪波高度删除Gizmos和逐个绘制 1.draw quad using System.Collections; using System.Collections.Generic; using UnityEngine;[RequireComponent(typeof(MeshFilter))] public class mesh_generator : MonoBehaviour {Mesh m…

基于MoviNet检测视频中危险暴力行为

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【Faster & Mask R-CNN模型实现啤酒瓶瑕疵检测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生…

Java项目实战II基于Java+Spring Boot+MySQL的桂林旅游景点导游平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…

每日读则推(十四)——Meta Movie Gen: the most advanced media foundation models to-date

premiere n.首映,首次公演 v.首次公演(戏剧、音乐、电影) a.首要的,最早的 Today we’re premiering Meta Movie Gen: the most advanced media foundation models to-date. 迄今,到现在为止 …

整数越界详解

目录 一、整数类型的范围 二、整数越界的原因 三、整数越界的示例 1.算术运算导致的整数越界 2.位运算导致的整数越界 3.数据类型转换导致的整数越界 四、整数越界的解决方法 在编程中&#xff0c;整数越界是一个需要特别注意的问题。当整数的计算结果超出了其所能表…

深度学习基础知识-编解码结构理论超详细讲解

编解码结构&#xff08;Encoder-Decoder&#xff09;是一种应用广泛且高效的神经网络架构&#xff0c;最早用于序列到序列&#xff08;Seq2Seq&#xff09;任务&#xff0c;如机器翻译、图像生成、文本生成等。随着深度学习的发展&#xff0c;编解码结构不断演变出多种模型变体…

Yolo系列 Yolo v4简介

目录 简介 YOLOv4的特点 1、数据增强&#xff1a;马赛克数据增强&#xff08;Mosaic Data Augmentation&#xff09; 2、 防止过拟合的方法DropBlock 3、标签平滑&#xff08;Label Smoothing&#xff09; 4、损失函数 &#xff1a;GIOU损失、DIOU损失、CIOU损失 &#x…