力扣题解(执行操作可获得的最大总奖励II)

3181. 执行操作可获得的最大总奖励 II

已解答

困难

相关标签

相关企业

提示

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

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

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

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

思路:

对于同类型的获取最大总奖励I,由于数据量小,因此采用01背包问题的思路,在O(N^2)的时间复杂度内也能顺利通过,本题由于数据长度和数据大小都是5*1e4,因此最坏时间复杂度是2.5*1e9,超出了时间上限。此处考虑时间的优化。

本题一层循环是遍历整个数组,是无法优化的,那么优化就是内层循环。内层循环所要进行的操作是将数据在小于reward[i]的总数和都加上reward[i]。由于变化是连续的一部分一起变换,且变换的具体情况和原本另一块区域是一致的,即用(0-----reward[i]-1)去更新(reward[i]-----2*reward[i]-1),且一一对应,因此可以考虑位运算直接左移reward[i]位在进行或运算。这样内部时间复杂度就是O(1)了。

代码处f1是用于保存本次reward[i]可能会影响的区域,之所以j是一个始终向前的指针,是因为在j已经遍历过的区域是一定已经更改成功的区域,即不需要重复更改。然后,之所以还需要一个f1来对f0进行修改,是因为原本f0中只是需要修改一部分的值,如果用f0自己对自己进行修改,那么会出现修改某些不应该被修改的地方。

class Solution {
public:
    int maxTotalReward(vector<int>& rewardValues) {
      map<int,int>dash;
      int n=rewardValues.size();
      sort(rewardValues.begin(),rewardValues.end());
      if(n>=2&&rewardValues[n-1]==rewardValues[n-2]+1)
      return 2*rewardValues[n-1]-1;
     bitset<100010>f0,f1;
     f0[0]=1;
      for(int i=0,j=0;i<rewardValues.size();i++)
      {
         while(j<rewardValues[i])
         f1[j]=f0[j],j++;
         f0|=f1<<rewardValues[i];
      }
      int ans=0;
    for(int i=0;i<f1.size();i++)
    if(f0[i])ans=i;

      return ans;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#从零开始学习(用户界面)(unity Lab4)

这是书本中第四个unity Lab 在这次实验中,将学习如何搭建一个开始界面 分数系统 点击球,会增加分数 public void ClickOnBall(){Score;}在OneBallBehaviour类添加下列方法 void OnMouseDown(){GameController controller Camera.main.GetComponent<GameController>();…

【踩坑随笔】Mask_RCNN基于服务器环境跑通Demo成功版

踩过的坑一个接一个&#xff0c;最后放弃在window环境下去尝试了&#xff0c;看到的大多有效的教程也都是ubuntu系统下的&#xff0c;鉴于我的电脑空间不够造了而且安双系统操作不当可能会导致本来的系统崩溃&#xff0c;所以干脆直接服务器租卡了&#xff0c;本文的环境亲测成…

10分钟使用Strapi(无头CMS)生成基于Node.js的API接口,告别繁琐开发,保姆级教程,持续更新中。

一、什么是Strapi&#xff1f; Strapi 是一个开源的无头&#xff08;headless&#xff09; CMS&#xff0c;开发者可以自由选择他们喜欢的开发工具和框架&#xff0c;内容编辑人员使用自有的应用程序来管理和分发他们的内容。得益于插件系统&#xff0c;Strapi 是一个灵活的 C…

【数据结构和算法】三、动态规划原理讲解与实战演练

目录 1、什么是动态规划&#xff1f; 2、动态规划实战演练 2.1 力扣题之爬楼梯问题 &#xff08;1&#xff09;解题思路1: &#xff08;2&#xff09;解题思路2: &#xff08;3&#xff09;动态规划&#xff08;DP&#xff09;&#xff1a;解题思路 &#xff08;4&#x…

【R + Python】iNaturalist 网站图片下载 inat api

文章目录 一、iNaturalist 简介二、R语言API&#xff1a;rinat三、示例3.1 获取观测数据3.2 绘制可视化图像函数用法 3.4 在区域网格中搜索3.5 下载图片3.51 提取图片 url3.52 下载图片: R语言3.53 下载图片: python 四、获取详细rinat包的文档 一、iNaturalist 简介 &#x1…

毕业设计选题:基于Python的招聘信息爬取和可视化平台

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 采集的数据列表 招聘数据大屏 摘要 本系统通过对网络爬虫的分析&#xff0c;研究智…

xlnt加载excel报错:xl/workbook.xml:2:2581: error: attribute ‘localSheetId‘ expected

解决方案 大家不一定能看懂&#xff0c;地址里说的啥意思&#xff0c;地址过去主要说明了从https://github.com/musshorn/xlnt/tree/issue_685合入可以解决问题&#xff0c;后面再想推送到官方地址&#xff0c;但没人维护了。 我这边直接给大家说一个结果就是&#xff1a;问题…

dbt-codegen: dbt自动生成模板代码

dbt项目采用工程化思维&#xff0c;数据模型分层实现&#xff0c;支持描述模型文档和测试&#xff0c;非常适合大型数据工程项目。但也需要用户编写大量yaml描述文件&#xff0c;这个过程非常容易出错且无聊。主要表现&#xff1a; 手工为dbt模型编写yaml文件&#xff0c;这过…

关于eclipse的workspace

如果项目很多&#xff0c;为了方便管理&#xff0c;最好不要是使用working set 对项目进行分组。一个workspace加载项目过多&#xff0c;即使进行分组&#xff0c;有些操作也很对所有项目生效。为了避免卡顿&#xff0c;建议直接使用workspace分组管理&#xff0c;而不是workin…

2024年妈杯MathorCup大数据竞赛A题超详细解题思路

2024年妈杯大数据竞赛初赛整体难度约为0.6个国赛。A题为台风中心路径相关问题&#xff0c;为评价预测问题&#xff1b;B题为库存和销量的预测优化问题。B题难度稍大于A题&#xff0c;可以根据自己队伍情况进行选择。26日早六点之前发布AB两题相关解题代码论文。 下面为大家带来…

Github优质项目推荐(第八期)

文章目录 Github优质项目推荐 - 第八期一、【manim】&#xff0c;66.5k stars - 创建数学动画的 Python 框架二、【siyuan】&#xff0c;19.5k stars - 个人知识管理软件三、 【GetQzonehistory】&#xff0c;1.3k stars - 获取QQ空间发布的历史说说四、【SecLists】&#xff0…

【C++篇】栈的层叠与队列的流动:在 STL 的韵律中探寻数据结构的优雅之舞

文章目录 C 栈与队列详解&#xff1a;基础与进阶应用前言第一章&#xff1a;栈的介绍与使用1.1 栈的介绍1.2 栈的使用1.2.1 最小栈1.2.2 示例与输出 1.3 栈的模拟实现 第二章&#xff1a;队列的介绍与使用2.1 队列的介绍2.2 队列的使用2.2.1 示例与输出 2.3 队列的模拟实现2.3.…

pair类型应用举例

在main.cpp里输入程序如下&#xff1a; #include <iostream> //使能cin(),cout(); #include <utility> //使能pair数据类型; #include <string> //使能string字符串; #include <stdlib.h> //使能exit(); //pair类型可以将两个相同的或不同类…

一个基于.NET8+WPF开源的简单的工作流系统

项目介绍 AIStudio.Wpf.AClient 是一个基于 WPF (Windows Presentation Foundation) 构建的客户端框架&#xff0c;专为开发企业级应用而设计。该项目目前版本为 6.0&#xff0c;进行了全面优化和升级&#xff0c;提供了丰富的功能和模块&#xff0c;以满足不同场景下的开发需…

张驰咨询:揭秘六西格玛项目如何“重塑”手术机器人集成度

项目背景 XR-1000型腔镜手术机器人是精智医疗公司最新推出的智能化手术设备&#xff0c;专注于微创外科手术&#xff0c;具有高度的精度和灵活性。随产品功能的扩展以及市场需求升级&#xff0c;系统集成度成为制约其性能提升的瓶颈。当前的设计中&#xff0c;机器人各模块的集…

C++20中头文件syncstream的使用

<syncstream>是C20中新增加的头文件&#xff0c;提供了对同步输出流的支持&#xff0c;即在多个线程中可安全地进行输出操作&#xff0c;此头文件是Input/Output库的一部分。包括&#xff1a; 1.std::basic_syncbuf&#xff1a;是std::basic_streambuf的包装器(wrapper)&…

Golang | Leetcode Golang题解之第509题斐波那契数

题目&#xff1a; 题解&#xff1a; type matrix [2][2]intfunc multiply(a, b matrix) (c matrix) {for i : 0; i < 2; i {for j : 0; j < 2; j {c[i][j] a[i][0]*b[0][j] a[i][1]*b[1][j]}}return }func pow(a matrix, n int) matrix {ret : matrix{{1, 0}, {0, 1}}…

格姗知识圈博客网站开源了!

格姗知识圈博客 一个基于 Spring Boot、Spring Security、Vue3、Element Plus 的前后端分离的博客网站&#xff01;本项目基本上是小格子一个人开发&#xff0c;由于工作和个人能力原因&#xff0c;部分技术都是边学习边开发&#xff0c;特别是前端&#xff08;工作中是后端开…

中电信翼康工程师:我在 Apache SeaTunnel 社区的贡献之旅

贡献者Github ID&#xff1a;luckyLJY 文章整理&#xff1a;曾辉 Apache SeaTunnel 作为一款强大的数据同步和转换工具&#xff0c;凭借其部署易用性、容错机制、数据源支持、性能优势、功能丰富性以及活跃的社区支持&#xff0c;成为了数据工程师们不可或缺的利器。 因其具有的…

LCD手机屏幕高精度贴合

LCD手机屏幕贴合&#xff0c;作为智能手机生产线上至关重要的一环&#xff0c;其质量直接关乎用户体验与产品竞争力。这一工艺不仅要求屏幕组件间的无缝对接&#xff0c;达到极致的视觉与触觉效果&#xff0c;还需确保在整个生产过程中&#xff0c;从材料准备到最终成品&#x…