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

Maximum Subarray Sum II

题目描述

Given an array of n integers, your task is to find the maximum sum of values in a contiguous subarray with length between a and b.

输入

The first input line has three integers n, a and b: the size of the array and the minimum and maximum subarray length.
The second line has n integers x1,x2,...,xn: the array values.
Constraints
1≤n≤2\times10^5
1≤a≤b≤n
-10^9≤xi≤10^9

输出

Print one integer: the maximum subarray sum.

样例输入
8 1 2
-1 3 -2 5 3 -5 2 2
样例输出
8

思路分析

1.读取数组x,前缀和处理

2.遍历数组x,下标从a到n,双端队列维护滑动窗口。

该窗口存储的是前缀和数组的下标,并确保队列中的下标对应的前缀和值单调递增。这样,队列的队首元素就是当前窗口内前缀和最小的下标。

队列元素k对应的前缀和x[k]尽可能小,以k+1为起点的子区间和才会尽可能大。

如果无法保证队列中的下标对应的前缀和值单调递增,也就无法保证队首是最优起点,时间复杂度也会大大增加。

解析样例:

i=1时,把0添加至队尾,更新ans=max(-2147483648,-1);

i=2时,弹出队尾元素0,把1添加至队尾,更新ans=max(-1,3);

i=3时,把2添加至队尾,ans仍为3;

i=4时,弹出队尾元素2,把3添加至队尾,弹出队首元素1,更新ans=max(3,5);

i=5时,把4添加至队尾,更新ans=max(5,8);

i=6时,把5添加至队尾,弹出队首元素3,ans仍为8;

i=7时,弹出队尾元素5和4,把6添加至队尾,ans仍为8;

i=8时,把7添加至队尾,ans仍为8。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a,b;
int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>a>>b;vector<ll>x(n+1,0);for(ll i=1;i<=n;i++){cin>>x[i];x[i]+=x[i-1];}deque<ll>q;ll ans=LONG_MIN;for(ll i=a;i<=n;i++){while(!q.empty()&&x[q.back()]>=x[i-a]){q.pop_back();}q.push_back(i-a);while(!q.empty()&&q.front()<i-b){q.pop_front();}if(!q.empty()){ans=max(ans,x[i]-x[q.front()]);}}cout<<ans;return 0;
}

http://www.lryc.cn/news/609293.html

相关文章:

  • 【超分辨率专题】PiSA-SR:单步Diff超分新突破,即快又好,还能在线调参
  • 【前端:Html】--1.2.基础语法
  • LCL滤波器及其电容电流前馈有源阻尼设计软件【LCLAD_designer】
  • MCU中的复位生成器(Reset Generator)是什么?
  • 2025年EAAI SCI1区TOP,森林救援调度与路径规划:一种新型蚁群优化算法应用,深度解析+性能实测
  • 【Spring】Bean的作用域(单例、多例、请求、会话、Application)
  • ICCV 2025 | EPD-Solver:西湖大学发布并行加速扩散采样算法
  • Azure DevOps — Kubernetes 上的自托管代理 — 第3部分
  • Autoswagger:揭露隐藏 API 授权缺陷的开源工具
  • Stream 过滤后修改元素,却意外修改原列表
  • 人工智能之数学基础:几何型(连续型)随机事件概率
  • Java开发中敏感信息加密存储全解析:筑牢数据安全防线
  • SpringBoot之整合MyBatisPlus
  • linux火焰图
  • javaweb开发之Servlet笔记
  • 大模型中的Token和Tokenizer:核心概念解析
  • 业务系统跳转Nacos免登录方案实践
  • 电力电子技术知识总结-----PWM知识点
  • 【MybatisPlus】join关联查询MPJLambdaWrapper
  • Javaweb————Windows11系统和idea2023旗舰版手动配置Tomcat9全流程解析
  • 性能测试工具ApacheBench、Jmeter
  • ospf笔记和 综合实验册
  • 在Ansys Mechanical中对磨损进行建模
  • 重生之我在10天内卷赢C++ - DAY 10
  • 分布式文件系统05-生产级中间件的Java网络通信技术深度优化
  • STM32F103_Bootloader程序开发13 - 巧用逆向拷贝,实现固件更新的“准原子”操作,无惧升级中的意外掉电
  • Ethereum: 了解炙手可热 Layer 2 解决方案 Base
  • Spring AOP_2
  • Python 小数据池(Small Object Pool)详解
  • NX969NX972美光固态闪存NX975NX977