蓝桥 程序员节发橙子 (思维)

简介: 蓝桥 程序员节发橙子 (思维)

题目描述
每年的 1024 程序员节日,黑马程序员都会举办大型的庆祝活动。今年的程序员节也不例外,每个班级的同学都发了橙子。

班级里有 n 名同学从前到后排成一排,且已经得知了这些同学的成绩,其中第 i 名同学的成绩是 ai。班主任想根据同学们上个阶段的考试成绩来评定发橙子的数量。为了激励成绩优秀同学,发橙子时需要满足如下要求:

相邻同学中成绩好的同学的橙子必须更多。若相邻的同学成绩一样,则它们分到的数量必须平等。
每个同学至少分配一个橙子
由于预算有限,班主任希望在符合要求的情况下发出尽可能少的橙子。请问,至少需要准备多少橙子呢?

输入
第一行是一个不超过 10^6 正整数 n,表示学生数量。

接下来一行有 n 个不超过 10^9 的非负整数 ai,表示第 i 个同学的成绩。

输出
输出答案,也就是需要最少准备多少个橙子。
样例输入
5
3 4 5 4 3
样例输出
9

分别从左到右和从右到左遍历一次数组,以从左到右的顺序为例
如果a[i]<a[i+1],就让L[i+1]=L[i]+1,类似于差分数组的样子。如果等于就相等,如果大于就附为0
R数组也一样的赋值
最后这一位等于L和R的最大值+1

#include <iostream>
#include <cstdio> 
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;

const int maxx=1e6+100;
int a[maxx];
int L[maxx],R[maxx];
int n;

int main(){
   
    scanf("%d",&n);
    for(int i=1;i<=n;i++) 
        scanf("%d",&a[i]);
    L[1]=R[n]=0;
    for(int i=2;i<=n;i++) {
   
        if(a[i]>a[i-1]) L[i]=L[i-1]+1;
        else if(a[i]==a[i-1]) L[i]=L[i-1];
        else L[i]=0;
    }
    for(int i=n-1;i>=1;i--) {
   
        if(a[i]>a[i+1]) R[i]=R[i+1]+1;
        else if(a[i]==a[i+1]) R[i]=R[i+1];
        else R[i]=0;
    }
    ll sum=0;
    for(int i=1;i<=n;i++) sum+=max(L[i],R[i])+(ll)1;
    cout<<sum<<endl;
    return 0;
}
相关文章
|
3月前
|
程序员
代码与生活:技术感悟中的哲理
【10月更文挑战第20天】 在编程的世界里,我们不仅仅是在编写代码,更是在塑造一种生活方式。本文将探讨如何将编程思维应用到日常生活中,以及这种思维方式如何帮助我们更好地理解世界和自己。通过具体的例子和深入的分析,我们将看到,编程不仅仅是一种技能,更是一种生活哲学。
43 0
|
4月前
|
前端开发 JavaScript 算法
编程之旅:从迷茫到精通的心路历程
【9月更文挑战第20天】在编程的世界里,每个人都是一名旅者。起初,面对复杂的代码和逻辑,我们如同初入森林的探险者,既充满好奇又感到迷茫。然而,正如古人云:“千里之行,始于足下。”通过不断学习和实践,我们逐渐找到了属于自己的路径。本文将分享一位程序员的成长故事,从大学毕业时的迷茫,到大胆尝试新领域,再到不断学习和提升,最终找到人生方向的过程。让我们一起跟随他的脚步,探索编程之旅的奥秘与乐趣。
|
4月前
|
程序员
从代码中感悟生活的哲理
【9月更文挑战第12天】本文以编程为引子,探讨了技术背后的哲学思考。文章通过深入浅出的方式,结合生活中的小故事和简单的代码示例,引导读者理解在看似冰冷的代码背后所蕴含的热情与智慧。文章旨在启发读者,无论面对何种挑战,都应保持初心,勇于探索,不断学习,最终找到属于自己的人生方向。
|
8月前
|
小程序 C++ Python
探索代码的诗意——我的编程感悟
【5月更文挑战第31天】在数字世界的浩瀚海洋中,我是一位航行者。每一次按下键盘,都是与机器灵魂的对话。这篇文章是我个人的技术之旅,记录了从困惑到顿悟的过程,以及那些让我着迷的编程之美。它不仅仅是关于技术的,更是关于创造和表达的艺术。
|
8月前
代码之禅:从技术探索到心灵成长
【5月更文挑战第27天】 在数字化的浪潮中,编程不仅仅是一种职业技能,更是一场思维与哲学的修行。本文通过作者的个人技术体悟,探讨如何将编程实践转化为对生活智慧的深刻理解。从面对问题的分析过程到解决方案的实现,再到对技术的深层次思考,文章揭示了编程背后隐含的生活哲理和心灵成长的途径。
|
8月前
|
JavaScript Java 大数据
转行程序员4年半,被裁了
转行程序员4年半,被裁了
119 2
|
人工智能 程序员 区块链
程序员转行能做啥?
程序员转行能做啥?
648 0
|
小程序 程序员
2022年程序员可以做哪些副业?
副业意味着自由 时至今日,仍然有一大群程序员还天真地认为从事副业是一种压迫。但事实是,副业给了你选择权,而拥有选择权就意味着自由。如果副业是用另一种编程语言完成的,当你用新语言找到更好的职位时,你就可以选择离开。你也可以把这些副业转化为你自己的新业务。
449 0
|
存储 分布式计算 JavaScript
浅谈程序员的“内卷化”
浅谈程序员的“内卷化”
177 0
|
程序员
程序员 - 箴言集
程序员 - 箴言集
105 0

相关实验场景

更多
下一篇
开通oss服务