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

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

题目描述
每年的 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;
}
相关文章
|
6天前
|
算法 程序员
代码之舞:编程艺术与技术感悟
在数字世界的广阔舞台上,编程不仅是逻辑的堆砌与算法的运行,它更像是一场精心编排的舞蹈。本文将通过个人的技术旅程,探讨编程之美,揭示如何将枯燥的代码转变为优雅的解决方案,并分享在技术探索中收获的深刻感悟。
15 2
|
25天前
|
算法 程序员
代码之舞:我的编程技术感悟
在数字世界中,编程如同一场精妙的舞蹈,每一个字符、每一行代码都承载着创造者的意图与情感。本文将通过个人的技术成长历程,探索编程之美,揭示那些看似枯燥代码背后的艺术与智慧。从初识编程的困惑到逐渐领悟编程的真谛,每一步都充满了挑战与惊喜。让我们一起走进编程的世界,感受它的无限魅力。
24 1
|
11天前
|
算法 程序员
代码之舞:编程艺术与实践感悟
在数字世界的舞台上,代码如同舞者的每一步,既是精确的科学,也是流动的艺术。本文将深入探讨编程背后的哲学和美学,通过个人的技术实践经历,揭示如何将创造性思维融入日常开发工作,提升代码质量,以及如何在解决问题的过程中找到乐趣和成就感。
|
3月前
|
小程序 C++ Python
探索代码的诗意——我的编程感悟
【5月更文挑战第31天】在数字世界的浩瀚海洋中,我是一位航行者。每一次按下键盘,都是与机器灵魂的对话。这篇文章是我个人的技术之旅,记录了从困惑到顿悟的过程,以及那些让我着迷的编程之美。它不仅仅是关于技术的,更是关于创造和表达的艺术。
|
8月前
|
设计模式 架构师 Java
牛皮了!世界级架构师,图解面向对象编程,小学生都能看得懂
面向对象编程(Object-oriented Programming,缩写:OOP)是软件工程中一种具有对象概念的编程范式(Programming Paradigm),同时也是一种程序开发的抽象方针,与之对应的编程范式还有:函数式编程(Functional Programming)、过程式编程(Procedural Programming)、响应式编程(Reactive Programming)等。
|
存储 机器学习/深度学习 自然语言处理
探索编程世界的宝藏:程序员必掌握的20大算法(下)
探索编程世界的宝藏:程序员必掌握的20大算法
118 0
|
程序员
少儿编程值得报班学习吗?程序员被问懵了!
赢在了起跑线上,输在了终点线前。
128 0
少儿编程值得报班学习吗?程序员被问懵了!
|
开发框架 安全 程序员
我编程,我快乐,献给所有的程序员
  最近读了《我编程,我快乐》,里面有一些观点给我了不少启发,特别是一些职业规划的方面的内容。   我编程,我快乐,献给所有的程序员   如果生活的大部分时间都被工作占据着,那么热爱工作就是热爱生活。 比起那些枯燥的简单任务,充满挑战、有驱动力、有回报的工作更能让你有动力在清晨从温暖的被窝里爬起来。工作做得好意味着你在充分发挥着才能。相反,如果工作做得不好,就证明你大部分时间都只能在懊悔,懊悔自己碌碌无为。
162 0
|
机器学习/深度学习 人工智能 算法
算法不扎实的程序员,每个都很慌
算法能力的考察,向来是顶级科研机构和IT公司面试时最具备区分度的成分,算法功夫扎实,提升面试效率。 算法长期以来被视作是聪明人的专利,好像有些人天生思路就开阔,遇到问题能马上整理出计算模型,然后实施巧思,而大多数人则只能望洋兴叹,一筹莫展。
3236 0
|
算法 程序员
程序员的内功——数据结构和算法系列
如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。 想写出精炼、优秀的代码,不通过不断的锤炼,是很难做到的。 开这个系列的目的是为了自我不断积累。不积跬步无以至千里嘛。 数据结构篇   线性表 顺序表的算法 单链表的算法 双链表的算法 循环链表的算法 栈 队列   算法篇 五大经典算法 经典算法不是真的算法,是一种思路,一种解决问题的方法。
1056 0