当前位置: 首页 > news >正文

最大子段和(就是之前总结线性dp思想)

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

输入格式

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

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

输出格式

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

输入输出样例

输入 #1复制

7
2 -4 3 -1 2 -4 3

输出 #1复制

4

说明/提示

样例 1 解释

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

数据规模与约定
  • 对于 40% 的数据,保证 n≤2×103。
  • 对于 100% 的数据,保证 1≤n≤2×105,−104≤ai​≤104。

以下dp[i]表示以a[i]为结尾的最大子段和,当然左区间起点不一定是1

#include<bits/stdc++.h>

using namespace std;

int ans=-1e9;

int main(){

    int n;

    cin>>n;

    int a[n+1];

    int dp[n+1];

    dp[0]=0;

    for(int i=1;i<=n;i++) {

        cin>>a[i];

        dp[i]=a[i]+max(dp[i-1],0);

        ans=max(ans,dp[i]);

    }

    cout<<ans<<endl;

    return 0;

}

相关文章:

  • “小显存”也能启动大模型
  • libmemcached库api接口讲解三
  • 可视化图解算法39: 输出二叉树的右视图
  • 前端表格滑动滚动条太费事,做个浮动滑动插件
  • synchronized关键字详解
  • 有关多线程
  • 总共76dp 空出20dp然后放一个控件的写法
  • Spring 中的 @ComponentScan注解详解
  • Android Framework学习五:APP启动过程原理及速度优化
  • Redis内存淘汰策略和过期键删除策略有哪些?
  • TAOCMS漏洞代码学习及分析
  • 微信开发者工具里面模拟操作返回、录屏、网络速度、截屏等操作
  • 企业级IP代理解决方案:负载均衡与API接口集成实践
  • 【CUDA】Sgemm单精度矩阵乘法(上)
  • 达梦数据库 【-6111: 字符串转换出错】问题处理
  • 【AI大模型】赋能【传统业务】
  • React构建组件
  • 微信小程序学习之轮播图swiper
  • 【unity游戏开发——编辑器扩展】EditorWindow自定义unity窗口拓展
  • 橙子、橘子相关(果实、叶片、疾病等)数据集大合集
  • 中日东三省问题的源起——《1905年东三省事宜谈判笔记》解题
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • 杭州“放大招”支持足球发展:足球人才可评“高层次人才”
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 第十届影像上海博览会落幕后,留给中国摄影收藏的三个问题