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

子区间问题

子区间问题将持续更新中……

目录

问题概述 

例题 

1.子区间和的最大值


问题概述 

子区间与子序列不同,它要求必须是从原区间中连续的取出一段,解决这类问题,最常用的方法就是前缀和与动态规划,也常常会结合哈希表,set集合等进行优化

例题 

1.子区间和的最大值

题目描述

Given an array of n integers, your task is to find the maximum sum of values in a contiguous, nonempty subarray.

输入

The first input line has an integer n(1 ≤ n ≤ 2*105): the size of the array.
The second line has n integers x1,x2,...,xn(-109 ≤ xi ≤ 109): the array values.

输出

Print one integer: the maximum subarray sum.

样例输入

8
-1 3 -2 5 3 -5 2 2

样例输出

9

思路:动态规划。用dp[i]记录以i为结尾的子区间的最大和,状态转移:两种情况:续在前一个数后面,dp[i]=dp[i-1]+x[i];以i为开头重新开始一个数组dp[i]=x[i],找最大值即可。

代码:

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=200010;
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n;cin>>n;vector<ll>x(n+1,0),dp(n+1,0);//以i为结尾的子区间的最大值 ll ans=LLONG_MIN; for (int i=1;i<=n;i++){cin>>x[i];dp[i]=max(x[i],x[i]+dp[i-1]);ans=max(ans,dp[i]);}cout<<ans;
}

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

相关文章:

  • 主机序列号的修改方法与原理
  • Azure DevOps 中的代理
  • 渗透作业4
  • LeetCode - 合并两个有序链表 / 删除链表的倒数第 N 个结点
  • webrtc弱网-QualityScaler 源码分析与算法原理
  • PLC传感器接线与输出信号接线
  • WSUS服务器数据库维护与性能优化技术白皮书
  • 力扣 hot100 Day64
  • 六、Linux核心服务与包管理
  • 若没有安全可靠性保障,对于工程应用而言,AI或许就是大玩具吗?
  • Python黑科技:用@property优雅管理你的属性访问
  • ThinkPHP5x,struts2等框架靶场复现
  • 控制建模matlab练习10:滞后补偿器
  • 吴恩达【prompt提示词工程】学习笔记
  • MCP革命:Anthropic如何重新定义AI与外部世界的连接标准
  • 2.4.1-2.4.3控制范围-控制进度-控制成本
  • STM32复位电路解析
  • Rustdesk中继服务器搭建(windows 服务器)
  • 蜂群优化算法:智能优化新突破
  • 联想笔记本安装系统之后一直转圈圈的问题了?无法正常进入到系统配置界面,原来是BIOS中的VMD问题
  • VUE2 学习笔记16 插槽、Vuex
  • 09.Redis 常用命令
  • C++23 Concepts:用类型约束重构泛型编程的终极方案
  • 选择排序原理与C语言实现详解
  • redis的Java客户端(SpringDataRedis)
  • 深入掌握 ExcelJS:Node.js 中强大的 Excel 操作库
  • 2、docker容器命令 | 信息查看
  • 关于Web前端安全之XSS攻击防御增强方法
  • RAG-Semantic Chunking
  • cursor 使用方法