【洛谷 P1115】最大子段和 题解(贪心算法)

2023-11-12

最大子段和

题目描述

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

7
2 -4 3 -1 2 -4 3

样例输出 #1

4

提示

样例 1 解释

选取 [ 3 , 5 ] [3, 5] [3,5] 子段 { 3 , − 1 , 2 } \{3, -1, 2\} {3,1,2},其和为 4 4 4

数据规模与约定

  • 对于 40 % 40\% 40% 的数据,保证 n ≤ 2 × 1 0 3 n \leq 2 \times 10^3 n2×103
  • 对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 2 × 1 0 5 1 \leq n \leq 2 \times 10^5 1n2×105 − 1 0 4 ≤ a i ≤ 1 0 4 -10^4 \leq a_i \leq 10^4 104ai104

思路

在遍历数组a时,累加每个元素的值,并在每次更新ans时使用max函数选择当前最大的子段和。

同时,如果当前的子段和sum小于0,则说明当前的子段对后面的结果没有贡献,因此将sum重置为0,从下一个元素重新开始计算。


AC代码

#include <iostream>
#include <algorithm>
#define AUTHOR "HEX9CF"
using namespace std;

const int maxn = 2e5 + 5;

int main()
{
    int n;
    int a[maxn];
    int sum, ans;
    cin >> n;
    sum = 0;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        if (!i)
        {
            ans = a[0];
        }
        sum += a[i];
        ans = max(ans, sum);
        if (sum < 0)
        {
            sum = 0;
        }
    }
    cout << ans << endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【洛谷 P1115】最大子段和 题解(贪心算法) 的相关文章

  • 检查空参数的最佳方法(保护子句)

    例如 您通常不希望构造函数中的参数为空 因此看到类似的内容是很正常的 if someArg null throw new ArgumentNullException nameof someArg if otherArg null throw
  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • 在通过网络发送之前压缩位图

    我正在尝试通过网络发送位图屏幕截图 因此我需要在发送之前对其进行压缩 有一个库或方法可以做到这一点吗 当您将图像保存到流时 您have选择一种格式 几乎所有位图格式 bmp gif jpg png 都使用一种或多种压缩形式 因此 只需选择适
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐

  • python3(二)Numpy

    这两个库都是基于C语言的 所以这两个库的计算速度相比python的list或dict来说很快 pandas又是基于numpy的库 相当于numpy的升级版本 并且用到了矩阵的计算 计算速度相比利用单个数据或字典 列表来说 快很多 1 基本
  • CAD+开发小结+交互+选择集+深度拷贝AcDbObjectId中指向的实体集+读取其他DWG文件

    深度拷贝将数组中的实体ID指向的实体拷贝至blockId为ID的块中 AcDbIdMapping adimIdMap AcApDocument pDoc acDocManager gt curDocument acDocManager gt
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    文章目录 一 集群规划及架构 二 系统初始化准备 所有节点同步操作 三 安装并配置cri dockerd插件 四 安装kubeadm 所有节点同步操作 五 初始化集群 六 Node节点添加到集群 七 安装网络组件Calico 八 测试Cor
  • sqli labs less 25

    按照常规输入id 1 提示报错信息如下 一个很常见的报错 可以看出是单引号闭合的语句 输入 id 1 or 1 报出的错误信息不明显 加入一个括号进行试探能不能报出更多的语句错误 输入 id 1 or 1 从上图看出来or 被屏蔽了 经过更
  • ubuntu搭建android编译环境

    本文来自linux与嵌入式技术Q群52240781 ubuntu12 04 14 04安装后搭建android编译环境 注安装的是64位ubuntu系统12 04或14 04 请安装ubuntu的LTS版即12 04或14 04 每2年发布
  • 87_BigDecimal的doubleValue()、toString()、toPlainString()与科学计数法

    主题 BigDecimal toPlainString 可以避免出现科学计数法格式的数据 项目上面有个小伙伴在用Bigdecimal进行数值计算时 用return num doubleValue 的方式将结果送到前台 测试数值较小时无问题
  • 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    报错如下 检查npm目录下是否还有node exe文件如果没有复制过来 我复制过来问题解决 首先我是node和npm版本和项目版本不适应 需要更换版本 所以重新安装node js在重新安装的过程中将安装的位置改变了 所以造成了这个可能
  • DSS简介

    原文链接 去中心化软件服务 DSS 是一个基于CCR的轻量级 net运行时环境 DSS提供了一个轻量级的 状态导向的服务模型 它将REST概念和构造高性能高扩展性应用的系统级方法结合在一起 在DSS中服务被暴露为一种可以被程序和UI操作界面
  • 将 Tocmat5.0 注册为 Windows 的服务程序

    将 Tocmat5 0 注册为 Windows 的服务程序 步骤 1 下载 Tomcat 5 0 x 不要下载安装版本 2 解压到 TOMCAT HOME 3 安装或者从别处拷贝JRE 推荐拷贝 可以删除不需要的文件 如文档等 4 在 TO
  • Qt编译MySQL数据库驱动

    文章目录 一 我的编译环境 二 需要 三 Qt的下载 四 编译驱动 主题 4 1 第一步打开msql pro 4 2 第二步 4 3 第三步 4 4 第四步 4 5 第五步 编译 最后一步 一 我的编译环境 Qt 5 14 2 mingw7
  • 大模型时代,企业如何重构 AI 应用落地范式?

    近一年来 生成式人工智能 AIGC 技术的快速发展和各种大模型的涌现 引发了全球范围内对于通用人工智能 AGI 时代是否即将到来的讨论 在 AIGC 大模型公共服务逐渐被大众辩证地接受后 如何用 AIGC 技术重塑企业智能服务成为一个深水区
  • 使用Jmeter进行http接口做功能、性能测试

    使用Jmeter进行http接口做功能 性能测试 1 使用Jmeter进行http接口做功能 性能测试 在测试移动APP时 会有很多接口需要做测试 我在这里介绍一下对HTTP接口做功能 性能的测试 首先我们会从开发人员拿到接口数据 1 1
  • 苹果IOS开发者账号总结

    详细地址 https developer apple com programs which program 个人账号 Individual 费用99美金一年 该账号在App Store销售者只能显示个人的ID 比如zhitian zhang
  • Linux 查看进程消耗内存情况总结

    在Linux中 有很多命令或工具查看内存使用情况 今天我们来看看如何查看进程消耗 占用的内存情况 Linux的内存管理和相关概念要比Windows复杂一些 在此之前 我们需要了解一下Linux系统下面有关内存的专用名词和专业术语概念 物理内
  • LeetCode之最长公共子序列问题LCS解决方法

    Leetcode官网解答 使用动态规划原理 请参考原文地址 https leetcode cn com problems longest common subsequence solution zui chang gong gong zi
  • Python机器学习--算法实现--常用算法在Sklearn中的回归算法关键参数详解

    常用算法在Sklearn中的关键参数详解 回归算法 线性回归算法 from sklearn linear model import LinearRegression LinearRegression fit intercept True n
  • VS2008调试dump文件

    让程序在崩溃时体面的退出之Dump文件 在我的那篇 让程序在崩溃时体面的退出之CallStack 中提供了一个在程序崩溃时得到CallStack的方法 可是要想得到CallStack 必须有pdb文件的支持 但是一般情况下 发布出去的程序都
  • 网址服务器不稳定,关于网站被360搜索提示服务器不稳定可能无法正常访问的解决方法...

    相信很多做网站的站长们都有过类似的经历吧 有时候因为服务器节点问题或者其他问题导致服务器或vps暂时性无法运行导致网站暂时无法打开 这些都是属于正常的现象 但是运气不好的时候辛辛苦苦优化的网站可能就会被搜素引擎标记为 该页面因服务器不稳定可
  • 锦囊妙计--组建新团队整体规划

    详细请见幕布链接 https mubu com doc 2MicLCcsoC 幕布内的具体内容还在持续完善中 敬请期待
  • 【洛谷 P1115】最大子段和 题解(贪心算法)

    最大子段和 题目描述 给出一个长度为 n n n 的序列 a a a 选出其中连续且非空的一段使得这段和最大 输入格式 第一行是一个整数 表示序列的长度 n