LeetCode 3186 最大施法伤害

题目信息

LeetoCode地址: . - 力扣(LeetCode)

题目理解

这道题很直观,玩游戏的都懂,伤害最大化嘛!

但是每个法术释放与否可能会影响总体的伤害,因此是从局部最优解找到全局最优解的动态规划问题!

禁止释法的区间是+-2,且相同伤害的法术可以释放多次,所以很容易想到,将伤害相同的法术进行计数,并按照伤害的大小进行排序。这样就可以从最小的伤害开始考虑释放与否了。

剩下的,直接看代码吧

动态规划写法

class Solution {public long maximumTotalDamage(int[] power) {Map<Integer, Integer> map = new HashMap<>();for (int p : power) {map.put(p, map.getOrDefault(p, 0)+1);}//所有不重合的法术伤害及个数int[][] sorted = new int[map.size()][2];int i = 0;for (Map.Entry<Integer, Integer> entry : map.entrySet()){ sorted[i][0] = entry.getKey();sorted[i][1] = entry.getValue();i++;}//对伤害进行排序Arrays.sort(sorted, (a,b) -> a[0]-b[0]);//记录从第一个法术开始到当前法术可能造成的最大伤害long[] dp = new long[sorted.length];// 第一个法术当然要释放,不然伤害就是0dp[0] = 1L * sorted[0][0] * sorted[0][1];for (i = 1;i < sorted.length; i++) {// 假如第i个法术不释放,则最大伤害就是上一个值dp[i] = dp[i-1];int j = i-1;// 如果决定释放第i个法术,则j代表了上一个最近可以释放的法术// 这里没有必要朝更早期遍历,因为dp[i]一定不小于dp[i-1]while (j>=0 && sorted[j][0]+2 >= sorted[i][0]) {j--;}//如果存在j,则将其伤害和当前法术的伤害相加,和上一个值比较if (j >=0) {dp[i] = Math.max(dp[i], sorted[i][0] * sorted[i][1]+dp[j]); } else {//否则将只释放第i个法术的伤害和上一个值比较dp[i] = Math.max(sorted[i][0] * sorted[i][1], dp[i]);}}return dp[sorted.length-1];}
}

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

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

相关文章

深度学习 --- stanford cs231学习笔记四(神经网络的几大重要组成部分)

训练神经网络1 1&#xff0c;激活函数&#xff08;activation functions&#xff09; 激活函数是神经网络之于线性分类器的最大进步&#xff0c;最大贡献&#xff0c;即&#xff0c;引入了非线性。 1&#xff0c;1 Sigmoid sigmoid函数的性质&#xff1a; 结合指数函数的图像可…

OpenGL3.3_C++_Windows(12)

demo演示 demo演示 模板stencil测试 OpenGL颜色缓冲区是用于存储渲染图像的颜色数据的内存区域&#xff0c;在每个新的渲染迭代&#xff0c;我们都将屏幕颜色清理glClearColor&#xff08;&#xff09;为我们指定的颜色&#xff0c;然后同时清除glClear()颜色缓冲区&#xff0…

《骑行健身:“柳叶刀”研究揭示的健康与经济双赢策略》

在这个物价飞涨、经济压力日益加重的时代&#xff0c;普通人如何在不增加额外负担的情况下提升生活质量&#xff1f;《柳叶刀》的最新研究为我们揭开了一个意想不到的秘密&#xff1a;坚持健身&#xff0c;尤其是骑行&#xff0c;竟等同于每年为自己赚取了一笔不小的财富。这一…

Java的Websocket库获取路径参数

一、映射路径参数(可选)&#xff1a; (一)设置占位符 在java.websocket.ServerEndpoint注解的路径中设置占位符。 例如假设映射的URL地址为&#xff1a;/socket/{id} (二)获取参数值 在OnOpen注解修饰的方法中设置参数&#xff0c;用注解java.websocket.PathParam(“id”)来赋…

【 Python高级编程】 Canny边缘检测算法阈值设置

Canny边缘检测算法中的两个阈值参数&#xff08;threshold1和threshold2&#xff09;的设置对于边缘检测的效果至关重要。选择合适的阈值需要根据实际应用场景和图像特点进行调整。以下是一些设置这两个阈值的指导原则和方法&#xff1a; 阈值设置原则 高阈值 (threshold2)&am…

C++链表相关内容温习回顾——移除链表元素

本文主要对之前学过的C链表相关内容进行温习回顾&#xff0c;并以 移除链表元素 为例&#xff0c;进行应用。 关于链表的基础理论可见&#xff1a;链表理论基础 应用示例&#xff1a;LeetCode 203 移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/ 0、…

餐饮环保新篇章:如何选购高品质油烟净化器

我最近分析了餐饮市场的油烟净化器等产品报告&#xff0c;解决了餐饮业厨房油腻的难题&#xff0c;更加方便了在餐饮业和商业场所有需求的小伙伴们。 随着环保意识的增强&#xff0c;餐饮业正迎来一场环保革命&#xff0c;油烟净化器成为保障餐饮卫生和环境清新的关键设备。面…

旋转的六边形

【题目描述】 输入一个整数n&#xff0c;绘制出n个不断旋转的六边形&#xff0c;如图1所示。 图1 旋转的六边形图形 【要求】 -绘制速度设为最快&#xff0c;画笔粗细为3。 -六边形每次旋转10度&#xff0c;边长增加10%。 【分析】 这是一个同心正六边&#xff0c;六边形边…

EasyExcel自定义处理器扩展指定行修改样式包括字体颜色

EasyExcel自定义处理器扩展指定行修改样式包括字体颜色 实现 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.…

spring:深入理解@EnableAspectJAutoProxy

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

Airtest 使用指南

Airtest 介绍 准备工作 AirtestIDE 安装与启动: https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/ 电脑端的准备工作完成后,对于手机端只需要打开允许USB调试,当首次运行时会提示安装PocoService,同意即可。 界面介绍

Rust 1.79.0发布

Rust 1.79.0发布 &#xff0c;此版本中的一些主要新功能和改进&#xff1a; 内联 const 表达式 内联表达式&#xff08;例如块&#xff09;现在在表达式位置上是稳定的&#xff0c;允许显式输入 const 上下文而无需额外声明。这使得涉及常量的代码更加简洁和可读&#xff0c;尤…

微信登录过程分析

文章目录 1、微信登录过程分析2、身份认证实现方案&#xff1a;3、AOP回顾3.1、AOP底层 1、微信登录过程分析 2、身份认证实现方案&#xff1a; 网关过滤器&#xff1a;gateway网关GlobalFilter自定义过滤器&#xff0c;拦截经过网关的所有请求SpringMVC拦截器&#xff1a;代码…

.NET C# ‘string‘ 类型思考与解析

目录 .NET C# string 类型思考与解析1 string 是值类型还是引用类型&#xff1f;2 为什么字符串要设计成引用类型&#xff0c;且相同字符串会用一个地址的字符串实例&#xff0c;这样解决了什么问题&#xff0c;有什么好处&#xff1f; .NET C# ‘string’ 类型思考与解析 1 ‘…

现货白银实时交易平台的成长阶段 你出在哪个阶段?

很多人喜欢在现货白银平台上做模拟交易&#xff0c;因为他们认为现货白银实时交易平台上交易太痛苦了&#xff0c;不光随时会面临风险&#xff0c;而且还可能让自己出现大的亏损。如果投资者认为痛苦&#xff0c;那笔者觉得投资者不妨将在现货白银实时交易平台上做交易&#xf…

0 简单的图像分类

本文主要针对交通标识图片进行分类&#xff0c;包含62类&#xff0c;这个就是当前科大讯飞比赛&#xff0c;目前准确率在0.94左右&#xff0c;难点如下&#xff1a; 1 类别不均衡&#xff0c;有得种类图片2百多&#xff0c;有个只有10个不到&#xff1b; 2 像素大小不同&…

滑动窗口(LeeCode209题,以JS为例)

什么是滑动窗口&#xff1f; 滑动窗口是算法中一种非常有用的技术&#xff0c;特别是在处理数据序列或数组时。它的核心思想是维护一个固定大小的窗口&#xff0c;这个窗口在数据序列上滑动&#xff0c;以便于在窗口内的元素上进行操作或计算。滑动窗口技术通常用于解决与数据…

对 2024 年美赛选题的建议

对2024年美赛选题的建议包括&#xff1a; 1. 深入探讨当下全球面临的重大问题和挑战&#xff1a;鉴于美赛通常聚焦于全球性议题&#xff0c;如气候变化、可持续发展、数据分析等&#xff0c;参赛学生应关注这些议题&#xff0c;并深入研究相关数据与背景信息&#xff0c;以提出…

趋势Deep Security(Trend Micro Deep Security)安装

趋势Deep Security安装 Deep Security下载地址&#xff1a;https://help.deepsecurity.trendmicro.com/software.html?regsen-hk&prodid1716&_ga2.165737150.1637045249.1717402661-819692893.1716530462 前言 Trend Micro Deep Security是一个提供深度包检查、入侵…

单片机建立自己的库文件(4)

文章目录 前言一、新建自己的外设文件夹1.新建外设文件夹&#xff0c;做项目好项目文件管理2.将之前写的.c .h 文件添加到文件夹中 二、在软件中添加项目 .c文件2.1 编译工程保证没问题2. 修改项目列表下的名称 三、在软件项目中添加 .h文件路径四、实际使用测试总结 前言 提示…