最大子段和(前缀和解决)

来自于洛谷的一道题,链接附上

最大子段和https://www.luogu.com.cn/problem/P1115


问题定义:给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大

以以下样本为例

复制代码
2 -4 3 -1 2 -4 3

当我们想求第i个位置的最大和

我们的前缀和数组为Presum,数组以1开始我们可以将其转化为

此时我们可以把问题转化为求下方式子的最大值

复制代码
presum[i]-presum[x];//1<=x<=n-1

此时我们可以遍历整个前缀和数组,减去最小的presumx,从而获得最大的max.


相关代码

cpp 复制代码
#include<iostream>
using namespace std;
typedef long long LL;
const int N = 2e5 + 10;
int n;
LL f[N];
int main()
{
	cin >> n;
	for (int i = 1;i <= n;i++)
	{
		int x;cin >> x;
		f[i] = f[i - 1] + x;
	}
	LL ret = -1e10;
	LL premin = 0;
	for (int i = 1;i <= n;i++)
	{
		ret = max(ret, f[i] - premin);
		premin = min(premin, f[i]);
	}
	cout << ret;
	return 0;
}
相关推荐
JieE2121 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2121 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术1 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦1 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户497863050731 天前
(一)小红的数组操作
算法·编程语言
怕浪猫1 天前
Electron 系列文章封面图
算法·架构·前端框架
徐小夕2 天前
JitWord 3.0 正式发布,高精度Word异构解析+复杂组件兼容,打造web端协同Word编辑器
前端·vue.js·算法
通信小呆呆2 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人