洛谷——1115 最大子段和(区间DP)

news/2024/7/7 19:29:50

题目描述

给出一段序列,选出其中连续且非空的一段使得这段和最大。

输入输出格式

输入格式:

 

输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度。

第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列。

 

输出格式:

 

输入文件maxsum1.out仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。

 

输入输出样例

输入样例#1:
7
2 -4 3 -1 2 -4 3
输出样例#1:
4

说明

【样例说明】2 -4 3 -1 2 -4 3

【数据规模与约定】

对于40%的数据,有N ≤ 2000。

对于100%的数据,有N ≤ 200000。

 

 

代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[200001],maxn,sum,m;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]<0) m++;} if(m==n){for(int i=1;i<=n;i++)sort(a+1,a+1+n); printf("%d",a[n]);return 0;}for(int i=1;i<=n;i++){sum+=a[i];if(sum<0){sum=0;}if(sum>maxn)maxn=sum;}printf("%d",maxn);return 0;} 

思路:

对于一个数列,列如:-1,2,5,-9,4,7,-6,89,12;

我们如果加上一个数反而是这个总数变得更小,那样我们还要它干什么!

又因为是连续的字段所以我们只需要把不加这个数的是总数纪录下来,然后以这个数的后一位为头开始找

如果往后的总数比他前面的总数大,那前面的值就被覆盖掉,那我们就引入一个变量maxn来记录这个最大值,

最后把这个最大只输出就好了!

但是!!

要注意:

万一里面全都是负数呢?

那样的话我们就进行特殊判断,如果全都是负数,那就把这些负数中最大的输出就好了!

反正加上其余的负数都没用,那还加他干什么!

转载于:https://www.cnblogs.com/z360/p/6752968.html


http://lihuaxi.xjx100.cn/news/281708.html

相关文章

扶稳!四大步“上手”超参数调优教程,就等你出马了 | 附完整代码

作者 | Matthew Stewart译者 | Monanfei责编 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】在本文中&#xff0c;我们将为大家介绍如何对神经网络的超参数进行优化调整&#xff0c;以便在 Beale 函数上获得更高性能&#xff0c;Beale 函数是评价优化…

什么是计算机嵌套分类汇总,Excel中插入分类汇总的嵌套级别的方法图解详细教程...

在上文我们讲解了Excel 2010工作表中为一组数据插入一个分类汇总级别的方法&#xff0c;本文则讲解了Excel 2010工作表中插入分类汇总的嵌套级别的方法。Excel 2010工作表中可以在相应的外部组中为内部嵌套组插入分类汇总&#xff0c;如下例所示。Excel 2010工作表中插入分类汇…

如何选择容器注册表?这里给出九个选项

很多人希望了解如何正确地选择容器注册表&#xff0c;以及为满足其软件开发需求提供的一些选择。 在2013年诞生的开源Docker引擎促使容器化成为实现云应用程序开发流程现代化的第一步。在Docker引擎出现之前&#xff0c;用户必须为特定的计算机/硬件配置应用程序。但这种方法的…

深入理解Eureka之源码解析

Eureka的一些概念Register&#xff1a;服务注册 当Eureka客户端向Eureka Server注册时&#xff0c;它提供自身的元数据&#xff0c;比如IP地址、端口&#xff0c;运行状况指示符URL&#xff0c;主页等。Renew&#xff1a;服务续约 Eureka客户会每隔30秒发送一次心跳来续约。 通…

Electio Time poj

第一次用结构体&#xff0c;写些自己的心得&#xff1a; #include<stdio.h> #include<algorithm> using namespace std; #define MAX 50000 struct COW //定义结构体&#xff0c;&#xff08;由于在cmp&#xff08;&#xff09;函数里需要用到结构体名&#xf…

基于OpenCV的行人目标检测

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达推荐阅读 42个pycharm使用技巧&#xff0c;瞬间从黑铁变王者Google C项目编程风格指南 (中文版) 分享转自|深度学习与计算机视觉介绍目标检测支持许多视觉任务&#xff0…

Spark入门系列(一) | 30分钟理解Spark的基本原理

作者 | 梁云1991转载自Python与算法之美&#xff08;ID:Python_Ai_Road&#xff09;导读&#xff1a;Spark 是大数据领域目前最流行的计算框架&#xff0c;很多初入门者想要了解它却没有比较系列全面的入门方法。因此&#xff0c;本系列文章将从零开始&#xff0c;用丰富和简单…

《大规模Scrum:More with LeSS》访谈

\关键结论\\大规模敏捷需要组织机构减少自身的复杂性。\\t需要一个恰到好处的框架来支持大规模敏捷。\\t所创建的环境鼓励自然涌现的非正式协作。\\t这使得团队开发人员能和客户直接沟通。\\t共同迭代和不断学习才能构建优秀的产品。\\\在Craig Larman和Bas Vodde所著的《More …