P1115 最大子段和(在线处理)

简介: P1115 最大子段和(在线处理)

1.描述:


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


2. 输入:


第一行是一个整数,表示序列的长度 n。

第二行有 n个整数,第 i 个整数表示序列的第 i 个数字 ai


3.输出:


输出一行一个整数表示答案。


4.样例输入:


7
2 -4 3 -1 2 -4 3


5.样例输出:


4


6.题目大意:


求最大子段和


7.思路


在线处理:

首先说最大子列和为非负的一个性质


如果整数序列image.png的 最大子列和为image.png那么必定有

image.png

对任意的image.png 成立

我对这个性质的理解就是,如果从头开始截取任一段和为负数,那么就与初始条件这是 最大子列 矛盾,这一段是负数我们完全可以不要它。(也就是说,最大子列 前面的元素和一定是负的,这样才被舍弃掉了)我们可以用这个性质进行在线处理,只要当前子列和为负,我们舍弃这一部分即可,不断比较求出一个最大的子列和


当然我们不能忽略一个特殊情况,就是最大子列和为负的情况,只有一个情况会使最大子列和为负,那就是整数序列中所有元素都是负数,这时它的最大子列中肯定也只有一个元素,就是所有负数里最小的那个元素,这对我们这个算法也没影响,每累加一次子列和就进行一次打擂台,进行一次清空,结果就是那个最大的负数,答案也正确,注意把最开始打擂台的数设成一个非常小的数。


8.代码


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6+10;
int n;
int a;
ll sum;
ll max1=-1e9+10;
int main()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    scanf("%d",&a);
    sum+=a;//求子列和
    max1=max(sum,max1);//打擂台比较
    if(sum<0) sum=0;//子列和为负就清空
  }
  cout<<max1;
}

.Ashy.
+关注
目录
打赏
0
0
0
0
2
分享
相关文章
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
8月前
|
数据结构之文件系统模拟(树数据结构)
本文介绍了文件系统模拟及其核心概念,包括树状数据结构、节点结构、文件系统类和相关操作。通过构建虚拟环境,模拟文件的创建、删除、移动、搜索等操作,展示了文件系统的基本功能和性能。代码示例演示了这些操作的具体实现,包括文件和目录的创建、移动和删除。文章还讨论了该算法的优势和局限性,如灵活性高但节点移除效率低等问题。
166 0
React 代码优化方案
【8月更文挑战第19天】React 代码优化方案
151 0
【C语言】qsort()函数详解:能给万物排序的神奇函数
【C语言】qsort()函数详解:能给万物排序的神奇函数
527 0
基于平均出行时间的ArcGIS交通可达性分析
基于平均出行时间的ArcGIS交通可达性分析
3190 0
【前端开发】HTTP 请求入门指南:最常见的七种请求方法。
在现代的前端开发中,与服务器进行数据交互是至关重要的任务。为了简化请求和处理数据的过程,开发人员使用各种前端请求库来进行网络请求。本文将介绍并比较几种常见的前端请求库,包括Fetch、Axios、Ajax、XHR、jQuery AJAX、SuperAgent和Vue-resource。通过了解它们的特点、使用方法和适用场景,您将能够更好地选择合适的请求库,并优化您的前端开发过程。
解决uniapp分段器参数改变不渲染,适用所有组件
解决uniapp分段器参数改变不渲染,适用所有组件
717 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问