首页 > 编程语言 >小猴编程周赛C++ | 环形最大子段和

小猴编程周赛C++ | 环形最大子段和

时间:2024-05-26 12:32:20浏览次数:20  
标签:周赛 200005 minn 子段 int maxs C++ a1 mins

学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!

附上汇总贴:小猴编程C++ | 汇总-CSDN博客


【题目描述】
给出一个长度为n的环形数组 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1​,a2​,…,an​,其中 a 1 a_1 a1​和 a n a_n an​首尾相接, a n a_n an​相邻的下一个元素是 a 1 a_1 a1​, a 1 a_1 a1​相邻的上一个元素是 a n a_n an​。现在我们想在环形数组 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1​,a2​,…,an​取连续且非空的一段,那么这段的和最大是多少?
【输入】
第一行,一个整数n;
第二行,n个整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1​,a2​,…,an​。
【输出】
一行,一个整数,表示结果。
【输入样例】

4
1 -2 3 -2

【输出样例】

3

【代码详解】
[图片]

#include <bits/stdc++.h>
using namespace std;
int n, a[200005], s[200005], minn=2e9, maxn=-2e9;
int mins[200005], maxs[200005];
int main()
{
    cin >> n;
    for (int i=1; i<=n; i++) {
        cin >> a[i];
        s[i] = s[i-1] + a[i];  // 求出前缀和数组
        mins[i] = min(mins[i-1], s[i]);  // 同步求出i项及以前的最小前缀和
        maxs[i] = max(maxs[i-1], s[i]);  // 同步求出i项及以前的最大前缀和
    }

    for (int j=1; j<=n; j++) {  // 遍历j,取消遍历i
        minn = min(minn, s[j]-maxs[j-1]);  // 普通线性队列最小子段和
        maxn = max(maxn, s[j]-mins[j-1]);  // 普通线性队列最大子段和
    }
    if (s[n]-minn==0) cout << maxn << endl;  // 特判,minn==s[n]时,如-1,-2,-3,-4,maxn应为-1,而不是0
    else cout << max(maxn, s[n]-minn) << endl;  // 否则正常输出
    return 0;
}

【运行结果】

4
1 -2 3 -2
3

标签:周赛,200005,minn,子段,int,maxs,C++,a1,mins
From: https://blog.csdn.net/guolianggsta/article/details/137994226

相关文章

  • 小猴编程周赛C++ | 密码锁
    学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!附上汇总贴:小猴编程C++|汇总-CSDN博客【题目描述】小猴有一个密码锁,密码锁是由n个轮子组成,每个轮子上都写着数字a......
  • 【C++函数指针】
    voidf(stringname){ cout<<"f()->mynameis:"<<name<<endl;}intmain(){ f("1"); autoi=f; i("2");}鼠标放在i上面可以看到类型,所以还可以这样: void(*j)(string)=f; j("2"); typedefvoid(*m)(st......
  • C++U7-06-图的进阶存储
    上节课作业讲解:链接:https://pan.baidu.com/s/1A3Y5_12IgwYbmuep0Q2w6Q?pwd=0000提取码:0000  邻接表和链式前向星都是图论中用于表示图的常用数据结构,它们各自有特定的特点和用途。以下是对这两种数据结构的详细解释:邻接表定义与特点:邻接表是用来表示有限图的无序列表的......
  • C++ STL 函数对象:隐藏的陷阱,如何避免状态带来的麻烦?
    STL函数对象:无状态即无压力一、简介二、函数对象三、避免在函数对象中保存状态3.1、函数对象3.2、lambda表达式四、选择合适的更高层次的结构五、总结一、简介在使用C++标准模板库(STL)时,函数对象(FunctionObject)是一种强大的工具,它可以帮助你编写更具表......
  • 【c++游戏】harry potter(破解版)
    引子相信——这款哈利波特游戏大家一定都见过,作为最流行的哈利波特文字游戏之一,其改变参数的密码实在是让人头疼,而且还要费劲去翻源代码,如下展示的代码是已经删除了改变参数要填密码的机制,真正做到破解版,同时,作者也对代码进行了改进,直接看源代码!(代码行数多,复制慢,请多等一会)游......
  • 计算机毕业设计项目推荐,82131基于SSM的流浪动物救助网站的设计与实现(开题答辩+程序定
    SSM流浪动物救助网站摘要随着生活水平的持续提高和家庭规模的缩小,宠物已经成为越来越多都市人生活的一部分,随着宠物的增多,流浪的动物的日益增多,中国的流浪动物领养和救助也随之形成规模,同时展现巨大潜力。本次系统的是基于SSM框架的流浪动物救助网站管理系统,平台用户可以......
  • (免费领源码)Java/Mysql数据库+53102互联网美食分享平台,计算机毕业设计项目推荐上万套实
    springboot互联网互联网美食分享平台系   院XXXX学科门类XXX专   业 XXX班级XXX学   号XXX姓   名XXX指导菜谱大全 XXX菜谱大全职称XXX2023年2月摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化......
  • (免费领源码)Java/Mysql数据库+53135高校大学生学科竞赛管理系统,计算机毕业设计项目推荐
    springboot高校大学生学科竞赛管理系统的设计与实现系   院XXXX学科门类XXX专   业 XXX班级XXX学   号XXX姓   名XXX2023年4月摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联......
  • (免费领源码)Java/Mysql数据库+53233基于SpringBoot的社区疫情防控系统,计算机毕业设计项
    springboot社区疫情防控管理系统摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对社区疫情防控管理系统等问题,对社区疫情防控管理系统进行研......
  • Effective ModernC++条款42:考虑使用置入代替插入
    更多C++学习笔记,关注wx公众号:cpp读书笔记Item42:Consideremplacementinsteadofinsertion如果你拥有一个容器,例如放着std::string,那么当你通过插入(insertion)函数(例如insert,push_front,push_back,或者对于std::forward_list来说是insert_after)添加新元素时,你传入的元......