洛谷 P1115 最大子段和
创始人
2024-05-29 18:39:31
0

题目链接:P1115 最大子段和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

7
2 -4 3 -1 2 -4 3

样例输出 #1

4

提示

样例 1 解释

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

数据规模与约定

  • 对于 40% 的数据,保证 n ≤ 2 × 10^3。
  • 对于 100% 的数据,保证 1 ≤ n ≤ 2 × 10^5,−10^4 ≤ ai ≤ 10^4。

AC code 1:(动态规划,线性dp)——使用dp数组存放每一个状态

#include
#include
#includeusing namespace std;int main()
{int n;cin>>n;vector a(n);for(int i = 0 ; i < n ; i ++)cin>>a[i];vector dp(n); // dp[i] 表示以下标 i 结尾的最大字段和dp[0] = a[0];int res = dp[0];for(int i = 1 ; i < n ; i ++){dp[i] = max(dp[i - 1] + a[i] , a[i]);res = max(res , dp[i]);}cout<

AC code 2: (发现每次只需要使用上一个状态(dp[i - 1]),因此可以直接使用一个变量保存上一个状态即可,减少额外的空间开销)

#include
#include
#includeusing namespace std;int main()
{int n;cin>>n;vector a(n);for(int i = 0 ; i < n ; i ++)cin>>a[i];int temp = a[0];int res = temp;for(int i = 1 ; i < n ; i ++){temp = max(temp + a[i] , a[i]);res = max(res , temp);}cout<

当然,这题也可以使用更为精妙的“分治”思想求解。

相关内容

热门资讯

为什么创业需要组成创业团队?答... 首段: “单打独斗”还是“团队作战”?这是很多创业者在初创业时都会面临的问题。那么,为什么创业需要...
【国家扶贫农村创业项目】助力乡... 首段: 随着我国经济的快速发展,农村地区的发展也成为了国家关注的焦点。在这个大背景下,国家扶贫农村...
今年有什么好生意 今年有什么好... 今年有什么好生意?这个问题一直困扰着很多创业者。随着市场的不断变化和消费需求的不断升级,今年的好生意...
养殖创业赚钱吗?揭秘养殖业赚钱... 首段: 养殖创业赚钱吗?相信这是许多想要投身养殖业的创业者心中的疑问。近年来,随着我国经济的快速发...
唐七公子的《三生三世,枕边书》... 唐七公子的《三生三世,枕边书》大概情节是怎样的?有没有谁知道?凤九和东华帝君的故事。枕上书不是枕边书...
我想请高人解签-一世姻缘岂偶然... 我想请高人解签-一世姻缘岂偶然,贵人扶助力为先,丝罗结就宾人语,伉俪谐和到百年.是什么意思?这个签是...
中国传媒大学数字媒体艺术专业本... 中国传媒大学数字媒体艺术专业本科生的教材有哪些?最好告诉我书名和作者。版本。谢啦!我是大一学生 广告...
我是电子商务专业的大学生,现在... 我是电子商务专业的大学生,现在的我很迷茫,我想努力,可是真不知道自己该学些什么充实自己的大脑,求救你...
中大门国际物流集团加密“郑州-...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:大象新闻)大...
水利部针对广东、广西、海南启动... 转自:央视网央视网消息:据预报,受第6号台风“韦帕”影响,7月19日至21日,华南大部、江南东南部及...