hrbsut 2353 I Want Candy (思维题)

来源:互联网 发布:超级玛丽安卓源码 编辑:程序博客网 时间:2024/06/02 05:30

I Want CandyTime Limit: 1000 MSMemory Limit: 256000 KTotal Submit: 29(10 users)Total Accepted: 11(8 users)Rating: Special Judge: NoDescription

小八被拜托给参加校赛(个人赛)的同学们分发糖果,长老给了n个同学的最终得分,有以下两个要求:

每个同学都至少分得一块糖果;

对于相邻的两个同学,分数高的同学要比分数低的同学分得的糖果多。

本着不要浪费的原则,长老让小八计算出最少需要多少块糖果然后去买...

“长老分明是在考验我小叮当”,还是帮帮小八吧...555...

Input

有多组输入数据,每组数据先输入一个整数n(1≤n≤105),表示有n个参加校赛的同学。接下来一行输入n个整数ai(0≤ai≤105,按顺序给出n位同学的得分。

Output

对于每组输入数据,输出一个数字,表示最少需要的糖果数,每组输出占一行。

Sample Input

3

1 2 2

Sample Output

4



正向扫一遍反向扫一遍保留每一个位置的最大值。



#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 100006int num[N];int a[N];int main(){    int n;    while(~scanf("%d",&n))    {        for(int i=0; i<n; i++)        {            scanf("%d",&a[i]);        }        memset(num,0,sizeof(num));        num[0]=1;        for(int i=1; i<n; i++)        {            if(a[i]>(a[i-1]))            {                num[i]=num[i-1]+1;            }            else            {                num[i]=1;            }        }        for(int i=n-2; i>=0; i--)        {            if(a[i]>a[i+1])            {                num[i]=max(num[i],num[i+1]+1);            }        }        int res=0;        for(int i=0; i<n; i++)        {            res+=num[i];        }        printf("%d\n",res);    }}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蒜蓉炒青茄 炒青 青炒西兰花 青西红柿炒熟能吃吗 青炒芥菜 炒青豆用焯水吗 炒青西红柿的家常做法 青西红柿能炒吃吗 素炒青豆的家常做法 青豆炒茄子的家常做法 青番茄炒熟了能吃吗 炒青豆的做法大全家常 素炒青萝卜的做法大全 西乡炒青 炒青萝卜的做法大全 炒青茄子的家常做法 青炒茄子的做法 虾仁炒青豆的家常做法 炒青茶叶 怎样炒辣椒好吃 炒青辣椒的做法大全 青椒炒土豆 青椒炒 土豆炒青椒 青椒炒芹菜 西红柿青椒炒鸡蛋 鸡蛋炒青椒 鱿鱼炒青椒 家常炒青椒 青椒木耳炒鸡蛋 青椒炒鸡腿 素炒青椒 鸡蛋干炒青椒 青椒炒鸭蛋 青椒炒油条 青椒素炒杏鲍菇 青椒炒银耳 青椒怎样炒好吃 如何炒青椒 炒青椒的家常做法 怎样炒青椒