【C++动态规划 贪心】3180. 执行操作可获得的最大总奖励 I|1848

【C++动态规划 贪心】3180. 执行操作可获得的最大总奖励 I|1848

本文涉及知识点

C++贪心
C++动态规划

LeetCode3180. 执行操作可获得的最大总奖励 I

给你一个整数数组 rewardValues,长度为 n,代表奖励的值。
最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 :
从区间 [0, n - 1] 中选择一个 未标记 的下标 i。
如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并 标记 下标 i。
以整数形式返回执行最优操作能够获得的 最大 总奖励。
示例 1:
输入:rewardValues = [1,1,3,3]
输出:4
解释:
依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。
示例 2:
输入:rewardValues = [1,6,4,3,2]
输出:11
解释:
依次标记下标 0、2 和 1。总奖励为 11,这是可获得的最大值。
提示:
1 <= rewardValues.length <= 2000
1 <= rewardValues[i] <= 2000

排序+动态规划+贪心之临项交换

我们令最优解按顺序选择的奖励为:{i1,i2 ⋯ \cdots ⋯ im},则一定是升序。如果不是,则选择非升序的相邻两项交换之,仍然是解。
我3180简称奖励数组为num,对num排序。M = num.back()

动态规划的状态表示

dp[i][m] 从num的前i个元素选择奖励,最大奖励能否是m。m ∈ \in ∈[0,2M]。

动态规划的转移方程

枚举前置状态(i,m)
dp[i+1] = dp[i] 不选择第i项奖励。
如果nums[i] >m 则,dp[i+1][m+nums[i]] ||= dp[i][m]。

动态规划的填报顺序

i从0到n-1,m从0到2M。

动态规划的初始值

dp[0][0]=true,其它全为false。

动态规划的返回值

dp.back()[m]成立的最大m。

代码

核心代码

classSolution{public:intmaxTotalReward(vector<int>& rewardValues){constint N = rewardValues.size();sort(rewardValues.begin(), rewardValues.end());constint M = rewardValues.back(); vector<vector<bool>>dp(N+1,vector<bool>(M*2+1)); dp[0][0]=true;for(int i =0; i < N; i++){ dp[i +1]= dp[i];for(int m =0; m < rewardValues[i]; m++){ dp[i +1][m + rewardValues[i]]= dp[i +1][m + rewardValues[i]]|| dp[i][m];}}for(int m =2* M; m >M; m--){if(dp.back()[m]){return m;}}return M;}};

单元测试

vector<int> rewardValues;TEST_METHOD(TestMethod1){ rewardValues ={1,3};auto res =Solution().maxTotalReward(rewardValues);AssertEx(4, res);}TEST_METHOD(TestMethod11){ rewardValues ={1,1,3,3};auto res =Solution().maxTotalReward(rewardValues);AssertEx(4, res);}TEST_METHOD(TestMethod12){ rewardValues ={1,6,4,3,2};auto res =Solution().maxTotalReward(rewardValues);AssertEx(11, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步ZEEKLOG学院,听白银讲师(也就是鄙人)的讲解。
https://edu.ZEEKLOG.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.ZEEKLOG.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

Read more

【AI深究】卷积神经网络:CNN深度解析——全网最详细全流程详解与案例(附Python代码演示)|数学表达、主流变体与架构创新、优缺点与工程建议、调优技巧|经典变体:ResNet、DenseNet详解

【AI深究】卷积神经网络:CNN深度解析——全网最详细全流程详解与案例(附Python代码演示)|数学表达、主流变体与架构创新、优缺点与工程建议、调优技巧|经典变体:ResNet、DenseNet详解

大家好,我是爱酱。本篇将会系统梳理卷积神经网络(Convolutional Neural Network, CNN)的原理、结构、数学表达、典型应用、可视化代码示例与工程实践,帮助你全面理解这一深度学习的“感知基石”。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力! 注:本文章颇长超过8000字长、以及大量详细、完整的Python代码、非常耗时制作,建议先收藏再慢慢观看。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力! 一、CNN的核心定义与结构 卷积神经网络(CNN)是一种专为处理具有类似网格结构的数据(如图像、音频、时序信号)而设计的深度神经网络。其核心思想是通过卷积操作自动提取局部特征,实现空间不变性和参数高效性。 * 英文专有名词:Convolutional Neural Network, CNN * 主要结构: * 卷积层(Convolutional

By Ne0inhk
Flutter 三方库 dart_quill_delta 鸿蒙极致图文编辑流底层映射适配指北:直达 Quill 内核级 Delta 交互体系架构支撑异端平台文档-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 dart_quill_delta 鸿蒙极致图文编辑流底层映射适配指北:直达 Quill 内核级 Delta 交互体系架构支撑异端平台文档-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 dart_quill_delta 鸿蒙极致图文编辑流底层映射适配指北:直达 Quill 内核级 Delta 交互体系架构支撑异端平台文档状态细粒度实时增量解构同步 在处理高质量的富文本编辑器开发时,如何确保数据在不同设备(手机、平板、桌面)上同步时的绝对一致性和高效性?dart_quill_delta 库作为业界标准 Quill Delta 协议的 Dart 语言实现,为鸿蒙端侧文档处理提供了强大的底层支持。 前言 什么是 Delta?它是专为富文本编辑器设计的 JSON 代表层,通过极简的 insert, delete, retain 三种指令,描述文档的每一次微小变动。在 OpenHarmony 致力于构建万物智联分布式办公场景的今天,直接操作 HTML 字符串已无法满足高性能同步的需求。

By Ne0inhk
从海量时序数据到无人值守:数据库在新能源集控系统中的架构实践

从海量时序数据到无人值守:数据库在新能源集控系统中的架构实践

文章目录 * 引言 * 关于金仓数据库 * 金仓数据库在新能源行业的技术解读 * 1. 应对海量时序数据:分区存储与高效查询 * 2. 支撑高并发访问:读写分离与自治调优 * 3. 保障业务连续性:跨地域高可用与容灾 * 4. 实现平滑迁移:高度兼容与自动化工具 * 案例分析:金仓数据库赋能新能源智慧运维 * 案例一:中广核新能源生产运维系统——应对“整合、高并发、高可用”三大挑战 * 案例二:国家能源集团龙源电力——186个新能源场站集控系统国产化替代 * 案例三:国家电投集团甘肃新能源——“无人值守”风电场集控系统 * 结语 引言 谈到“双碳”与能源革命,风电,光伏这些新能源产业显然是当下最为炙手可热的风口,若想在该赛道跑得更远,更快,数字化和智能化转型并非可选,而是必备功课,要知道,从远程操控成千上万台风电机组,到及时分析大量的设备数据,直至把整个生产运维流程管理得井井有条,哪一步能离开稳定,高效且安全的数据“大后方”

By Ne0inhk
智谱GLM-5深度解析:稀疏架构革新与2026年开发者实操全指南(附可运行代码)

智谱GLM-5深度解析:稀疏架构革新与2026年开发者实操全指南(附可运行代码)

一、背景引入:2026年大模型落地痛点与GLM-5的破局意义 2026年,AI大模型赛道正式告别“参数内卷”,迈入效率与规模双轮驱动的新阶段,ZEEKLOG平台数据显示,开发者核心痛点集中于三点:算力成本居高不下、长文本处理时延过高、国产模型本土化适配不足。 2月11日,智谱AI正式发布新一代旗舰大模型GLM-5,此前通过OpenRouter平台匿名曝光的“Pony Alpha”,经开发者验证确认为其测试版,上线首日即处理40亿token、接收20.6万请求,引爆开发者圈层。 作为适配2026年“稀疏架构+AI原生应用”趋势的核心模型,GLM-5凭借DSA稀疏注意力、MoE混合专家架构等革新,完美解决开发者“高性能与低成本不可兼得”的核心诉求。 二、GLM-5核心技术原理:架构革新与能力升级 GLM-5的核心竞争力源于底层架构的重构与工程化优化,相较于上一代GLM-4.7,在架构设计、推理效率、能力覆盖上实现代际跨越,关键技术原理围绕“稀疏化、高效化、本土化”三大核心展开。 2.1 核心架构:DSA稀疏注意力+MoE混合专家模型

By Ne0inhk