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;
}

目录
相关文章
|
7月前
|
存储 机器学习/深度学习 算法
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
77 3
|
7月前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
7月前
|
机器学习/深度学习 人工智能
PTA之N个数求和(细节题)天梯赛
编程题,要求计算以分子/分母形式给出的一组有理数的和,输出结果也要是最简有理数形式。输入包含正整数N(N≤100)及N个有理数,输出为和的最简形式。示例:输入5个数2/5, 4/15, 1/30, -2/60, 8/3,输出3 1/3;输入2个数4/3, 2/3,输出2。代码中包含求最大公约数的函数和计算有理数和的主要逻辑。
55 0
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
一区9.3分top刊|多组学SNF数据融合的正确打开方式
这篇研究文章聚焦于多组学在揭示胎盘功能障碍中的作用,发表于2023年9月的《BMC Medicine》,IF为9.3。研究通过整合转录组学、蛋白质组学和代谢组学数据,鉴定出与常见产科综合征(如先兆子痫、胎儿生长受限和自发性早产)无关的胎盘集群。使用人工智能的无偏相似性网络融合(SNF)方法,分析发现四个不同的胎盘簇,其中早发性先兆子痫的簇显示强烈的功能障碍模式,而以自发性早产为主的簇则较弱。研究结果增加了对病理过程的理解,可能促进个性化干预措施的发展。
207 0
|
存储 算法 Java
dp算法 力扣174地下城游戏
dp算法 力扣174地下城游戏
|
8月前
|
算法
倍增在线求LCA
倍增在线求LCA
36 0
|
C++
蓝桥杯 2240. 买钢笔和铅笔的方案数c++解法
蓝桥杯 2240. 买钢笔和铅笔的方案数c++解法
143 0
|
算法 安全 Swift
LeetCode - #42 接雨水(Top 100)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode - #42 接雨水(Top 100)
|
算法 安全 Swift
LeetCode - #45 跳跃游戏 II(Top 100)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
索引
【day04】力扣(LeetCode)每日一刷[1306. 跳跃游戏 III ][703. 数据流中的第 K 大元素 ][1337. 矩阵中战斗力最弱的 K 行]
了解学习 跳跃游戏 III , 数据流中的第 K 大元素 , 矩阵中战斗力最弱的 K 行。
214 0
【day04】力扣(LeetCode)每日一刷[1306. 跳跃游戏 III ][703. 数据流中的第 K 大元素 ][1337. 矩阵中战斗力最弱的 K 行]