当前位置: 首页 > news >正文

【数据结构-差分】力扣1589. 所有排列中的最大和

有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + … + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。

你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。

由于答案可能会很大,请你将它对 109 + 7 取余 后返回。

示例 1:
输入:nums = [1,2,3,4,5], requests = [[1,3],[0,1]]
输出:19
解释:一个可行的 nums 排列为 [2,1,3,4,5],并有如下结果:
requests[0] -> nums[1] + nums[2] + nums[3] = 1 + 3 + 4 = 8
requests[1] -> nums[0] + nums[1] = 2 + 1 = 3
总和为:8 + 3 = 11。
一个总和更大的排列为 [3,5,4,2,1],并有如下结果:
requests[0] -> nums[1] + nums[2] + nums[3] = 5 + 4 + 2 = 11
requests[1] -> nums[0] + nums[1] = 3 + 5 = 8
总和为: 11 + 8 = 19,这个方案是所有排列中查询之和最大的结果。

示例 2:
输入:nums = [1,2,3,4,5,6], requests = [[0,1]]
输出:11
解释:一个总和最大的排列为 [6,5,4,3,2,1] ,查询和为 [11]。

示例 3:
输入:nums = [1,2,3,4,5,10], requests = [[0,2],[1,3],[1,1]]
输出:47
解释:一个和最大的排列为 [4,10,5,3,2,1] ,查询结果分别为 [19,18,10]。

在这里插入图片描述

差分

class Solution {
public:int maxSumRangeQuery(vector<int>& nums, vector<vector<int>>& requests) {int MOD = 1e9 + 7;int n = nums.size();vector<int> diff(n+1);for(auto &request: requests){diff[request[0]]++;diff[request[1]+1]--;}int s = 0;for(int i = 1; i < n; i++){diff[i] += diff[i-1];}std::sort(diff.begin(), diff.end(), greater<int>());std::sort(nums.begin(), nums.end(), greater<int>());long long res = 0;for(int i = 0; i < n; i++){res += (long long)nums[i] * diff[i];}return res % MOD;}
};

这道题目,首先我们可以想到记录request区间覆盖最多次的位置是哪个,然后覆盖最多次的位置,就将nums最大的值和他相乘,然后尽量保证覆盖多次的位置可以乘以较大的值,这样最后结果的和才会最大。

我们可以考虑使用差分数组来记录每个位置被覆盖的次数的差分数组,然后diff[i] += diff[i-1];这个代码,遍历diff,这时候diff的含义就从差分数组变成了记录每个位置覆盖的次数。由于我们需要找到被覆盖最多的次数,然后将次数乘以最大的值,被覆盖第二多的次数乘以第二大的值,所以我们将diff和nums都进行降序排序。最后将nums[i]*diff[i]相乘,记录到res中,最后返回的res就是最大的结果

相关文章:

【数据结构-差分】力扣1589. 所有排列中的最大和

有一个整数数组 nums &#xff0c;和一个查询数组 requests &#xff0c;其中 requests[i] [starti, endi] 。第 i 个查询求 nums[starti] nums[starti 1] … nums[endi - 1] nums[endi] 的结果 &#xff0c;starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列…...

Spark部署文档

Spark Local环境部署 下载地址 https://dlcdn.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz 条件 PYTHON 推荐3.8JDK 1.8 Anaconda On Linux 安装 本次课程的Python环境需要安装到Linux(虚拟机)和Windows(本机)上 参见最下方, 附: Anaconda On Linux 安…...

Broadcast:Android中实现组件及进程间通信

目录 一&#xff0c;Broadcast和BroadcastReceiver 1&#xff0c;简介 2&#xff0c;广播使用 二&#xff0c;静态注册和动态注册 三&#xff0c;无序广播和有序广播 1&#xff0c;有序广播的使用 2&#xff0c;有序广播的截断 3&#xff0c;有序广播的信息传递 四&am…...

5分钟熟练上手ES的具体使用

5分钟上手ES的具体使用 相信有很多同学想要去学习elk时会使用docker等一些方式去下载相关程序&#xff0c;但提到真正去使用es的一系列操作时又会知之甚少。于是这一篇博客应运而生。 本文就以下载好elk/efk系统后应该如何去使用为例&#xff0c;介绍es的具体操作。 es关键字…...

lambda 自调用递归

从前序与中序遍历序列构造二叉树 官方解析实在是记不住&#xff0c;翻别人的题解发现了一个有意思的写法 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {auto dfs [](auto&& dfs, auto&&…...

mac中git操作账号的删除

命令行玩的很溜的可以跳过 找到钥匙串访问 搜github、gitee就行了...

AI Agent的20个趋势洞察

结论整理自【QuestMobile2024 AI智能体应用洞察半年报】&#xff1a; AI原生应用&#xff08;APP)一路高歌&#xff1b;豆包用户突破3000万&#xff1b;TOP10 APP以综合类应用为主。无论何种类型的AIGC APP都以智能体为“抓手”&#xff0c;专注于解决各种细分场景中的问题&am…...

Spring Boot-定时任务问题

Spring Boot 定时任务问题及其解决方案 1. 引言 在企业级应用中&#xff0c;定时任务是一项常见需求&#xff0c;通常用于自动化执行某些操作&#xff0c;如数据备份、日志清理、系统监控等。Spring Boot 提供了简洁易用的定时任务机制&#xff0c;允许开发者通过简单的配置来…...

从混乱到清晰!借助Kimi掌握螺旋型论文结构的秘诀!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 写学术论文有时会让人感到头疼&#xff0c;特别是在组织结构和理清思路时&#xff0c;往往觉得无从下手。 其实&#xff0c;找到合适的结构不仅能帮你清晰地表达研究成果&#xff0c;还能让你的论文更有说…...

中国电子学会202306青少年软件编程(Python)等级考试试卷(二级)真题

一、单选题(共25题,每题2分,共50分) 1、运行以下程序,如果通过键盘先后输入的数是1和3,输出的结果是?( ) a = int(input()) b = int(input()) if a < b:a = b print(a)A. 3 1 B. 1 3 C. 1 D. 3 2、运行以下程序,输出的结果是?( ) n = 10 s = 0 m = 1 while…...

样本册3D翻页电子版和印刷版同时拥有是一种什么体验

​在数字化时代&#xff0c;样本册3D翻页电子版的兴起&#xff0c;让传统印刷版样本册面临着前所未有的挑战。与此同时&#xff0c;许多企业也开始尝试将两者相结合&#xff0c;以满足更多元化的市场需求。那么&#xff0c;拥有一份既具备数字化优势&#xff0c;又保留传统印刷…...

8586 括号匹配检验

### 思路 1. **初始化栈**&#xff1a;创建一个空栈用于存储左括号。 2. **遍历字符串**&#xff1a;逐个字符检查&#xff1a; - 如果是左括号&#xff08;( 或 [&#xff09;&#xff0c;则入栈。 - 如果是右括号&#xff08;) 或 ]&#xff09;&#xff0c;则检查栈是…...

案例精选 | 聚铭助力河北省某市公安局筑牢网络安全防护屏障

近年来&#xff0c;各级公安机关积极响应信息化发展趋势&#xff0c;致力于提升公安工作的效能与核心战斗力。河北省某市公安局作为主管全市公安工作的市政府部门&#xff0c;承担着打击违法犯罪、维护社会稳定的重任。随着信息化建设的推进&#xff0c;局内系统数量、种类及数…...

VBS学习2:问题解决(文件中含义中文运行报错或者中文乱码)

文件中含义中文运行报错或者中文乱码 问题 msgbox"fdsfdsf大蘇打撒旦dsfsdffsdfsd发斯蒂芬斯蒂芬"解决 文件编码修改成GB2312...

首次揭秘行业内幕!范罗士、希喂、有哈、小米、安德迈宠物空气净化器实测分析

前段时间有个朋友来我家做客&#xff0c;看到我家三只长毛猫&#xff0c;家里还是干干净净的&#xff0c;他家一只短毛猫都猫毛满天飞。也是很细心&#xff0c;留意到我家猫拉完粑粑后&#xff0c;我立刻就去把宠物空气净化器开上了&#xff0c;他一点味都没闻到。 回家后立刻…...

1267:【例9.11】01背包问题(信奥一本通)

题目链接&#xff1a;信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn) 今天刚看完卡尔大哥讲解的01背包&#xff0c;今天手敲了一遍&#xff0c;还是很多问题&#xff0c;只能说自己还是刷题太少或者说是没理解到位。 代码如下 # include <iostrea…...

信息化时代下的高标准农田灌区:变革与机遇并存

在信息化时代的浪潮中&#xff0c;高标准农田灌区的建设与管理正经历着前所未有的变革&#xff0c;这既是一个挑战重重的历程&#xff0c;也孕育着无限的发展机遇。随着物联网、大数据、云计算以及人工智能等先进技术的飞速发展与融合应用&#xff0c;传统的农田灌溉模式正在被…...

【系统架构设计师-2013年真题】案例分析-答案及详解

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【材料1】问题1问题2【材料2】问题1问题2问题3问题4【材料3】问题1问题2问题3【材料4】问题1问题2问题3【材料5】问题1问题2问题3【材料1】 阅读以下关于企业应用系统集成架构设计的说明,在答题纸上回答问题1和问题…...

git merge如何忽略部分路径

参考文章&#xff1a; Git - Ignore files during merge How to make git ignore a directory while merging 在进行git merge时&#xff0c;想忽略部分路径的回合。 如&#xff1a;将develop分支merge回master&#xff0c;但是忽略/path/to/folder路径 操作&#xff1a; gi…...

spring boot导入多个配置文件

1、简介 Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数&#xff0c;与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。 我们只需要在application.properties/application.yml配置文件中通过spring.config.…...

ERTEC 系列 PROFINET 芯片级硬件过滤器分析

起因是我想在搞一些操作windows进程的事情时&#xff0c;老是需要右键以管理员身份运行&#xff0c;感觉很麻烦。就研究了一下怎么提权&#xff0c;顺手瞄了一眼Windows下用户态权限分配&#xff0c;然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

Qwen3-14B私有部署镜像实战:基于AI Agent的自动化工作流设计

Qwen3-14B私有部署镜像实战&#xff1a;基于AI Agent的自动化工作流设计 1. 为什么需要AI Agent 想象一下&#xff0c;每天早上打开电脑&#xff0c;你的数字助手已经自动整理好当天的会议纪要、生成了数据分析报告、回复了常规邮件&#xff0c;甚至根据你的日程安排调整了工…...

千问3.5-2B环保监测辅助:水质检测仪读数识别、污染源现场图描述与报告生成

千问3.5-2B环保监测辅助&#xff1a;水质检测仪读数识别、污染源现场图描述与报告生成 1. 环保监测中的AI视觉助手 环保监测工作常常面临两大挑战&#xff1a;现场数据采集的准确性和后期报告生成的效率。传统方式需要工作人员手动记录仪器读数、拍摄现场照片后返回办公室整理…...

别再只盯着神经网络了!聊聊AI的另外两条路:专家系统和强化学习怎么用

当深度学习不是最优解&#xff1a;专家系统与强化学习的实战突围指南 在科技媒体的狂轰滥炸下&#xff0c;神经网络几乎成了人工智能的代名词。但当我们真正将AI技术落地到企业级场景时&#xff0c;往往会发现&#xff1a;那些需要处理小样本数据、要求决策过程透明可解释、或者…...

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

从PX4的FRD到Mavros的FLU&#xff1a;无人机坐标系转换实战指南 当你在ROS环境下通过Mavros向PX4飞控发送位置指令时&#xff0c;是否遇到过无人机朝完全相反方向飞行的情况&#xff1f;这种"方向错乱"的根源往往在于坐标系理解的偏差。本文将彻底解开PX4与Mavros之间…...

阶跃星辰(Step):前微软小冰之父的 AI 豪赌

阶跃星辰&#xff08;Step&#xff09;&#xff1a;前微软小冰之父的 AI 豪赌 一句话概括&#xff1a;阶跃星辰&#xff08;StepFun&#xff09;是由微软小冰前负责人姜大鑫创立的 AI 公司&#xff0c;其 Step-2 大模型达到万亿参数级别&#xff0c;是国内少数真正挑战顶级闭源…...

机器学习04——numpy

1、numpy介绍Numpy&#xff08;Numerical Python&#xff09;是一个开源的Python科学计算库&#xff0c;用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务&#xff0c;使用Numpy比直接使用Python要简洁的多。Numpy使用ndarray对象来处理多维…...

别光调包了!在EduCoder上通关‘卷积神经网络实现’后,我搞懂了im2col加速的奥秘

从EduCoder实战到工业级优化&#xff1a;im2col如何让卷积计算快10倍 在EduCoder平台完成"卷积神经网络实现"实验时&#xff0c;很多同学会疑惑&#xff1a;为什么提供的代码模板里要用im2col这个看似复杂的函数&#xff1f;直接写四重循环实现卷积不是更直观吗&…...

Zotero文献元数据拯救指南:从混乱到规范的自动化解决方案

Zotero文献元数据拯救指南&#xff1a;从混乱到规范的自动化解决方案 【免费下载链接】zotero-format-metadata Linter for Zotero. A plugin for Zotero to format item metadata. Shortcut to set title rich text; set journal abbreviations, university places, and item …...

国产SeekWave 双频WIFI6+BT5.4 VS6621SR80基于RK3588平台成功替换RTL8822模组 硬件兼容 速率可达600Mbps

RK3588是瑞芯微&#xff08;Rockchip&#xff09;推出的旗舰级SoC芯片&#xff0c;采用8nm工艺&#xff0c;集成‌四核Cortex-A76和四核Cortex-A55 CPU、ARM Mali-G610 MP4 GPU、6 TOPS NPU‌&#xff0c;支持8K视频编解码。‌‌1‌‌2‌CPU‌&#xff1a;八核ARM架构&#xff…...