山峰

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

金石山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, ……, n。编号为i的山峰高度为hi。每个山峰的高度两两不同
小木示从西向东依次爬过这n个山峰,到每一个山峰的山顶的时候,他都会往西边眺望,并且会记录下自己能看到的山峰的个数。
(比如说小木示 现在在4号山峰,前四号山峰的高度分别为9,4,5,1。他现在能看到的山峰个数就是2,因为第二个山峰被第三个山峰挡住了)
严格的来说,小木示在i位置的时候,对于一个山峰j (j < i),如果不存在一个山峰k满足hj < hk (j < k < i)。则山峰j是可见的。

小木示把自己记录的山峰的个数加和作为这次爬山的快乐值,现在给你n个山峰的高度,求小木示的快乐值。

Input

多组输入,首先输入一个n(1<=n<=106),表示山峰的个数。

接下来一行n个数,表示对应山峰的山峰的高度(1<=h<=106)。

Output

输出小木示的快乐值

Example Input 1

4
1 6 5 1

Example Output

4
//创建日期2016/9/7
//源代码
#include <stdio.h>
#define lmax 1123456
long long int n;
typedef int element;
typedef struct                          //定义栈
{
    element *top;     
    element *base;
    int size;
}st;
int initstack(st *s)                    //构造空栈
{
    s->base=(element *)malloc(lmax*sizeof(element));
    if(!s->base)
    {
        return -1;
    }
    s->top=s->base;
    s->size=lmax;
    return 0;
}
void creatstack(st *s)                  //依次输入
{
    long long int sum=0;
    long long int x,m;
    m=n;
    while(n--)
    {
        scanf("%lld",&x);
        if(n==m-1)                      //输入元素第一个直接入栈
        {
            *(++s->top)=x;
        }
        else                            //接下来元素需要判断
        {
            if(x<*(s->top))             //x进栈
            {
                *(++s->top)=x;
            }
            else if(x==*(s->top))       //x出栈
            {
                while(x==*(s->top)&&s->top>=(s->base+1))
                {
                    --s->top;
                }
                *++s->top=x;
            }
            else if(x>*(s->top))                
            {
                while(x>*(s->top)&&s->top>=(s->base+1))     //若栈内为6和5,x现为7需要依次删除5、6
                {
                    --s->top;
                    sum++;
                }
                *(++s->top)=x;

}
        }
        sum+=(s->top-(s->base+1));                         //栈顶减去栈底即为看到的山峰
    }
    printf("%lld\n",sum);
}
int main()
{
    st s;
    initstack(&s);
    while(scanf("%lld",&n)!=EOF)
    {
        initstack(&s);
        creatstack(&s);
    }
}

Mountaintop(山峰)相关推荐

  1. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

  2. 栈与队列10——可见的山峰对数量

    题目 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度.有两个方向:next方向(逆时针方向),last 方向(顺时针). 山峰A和山峰B相互看见的条件为: 如果A和B是同一座山,认为 ...

  3. codevs 1531 山峰

    codevs 1531 山峰 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi ...

  4. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs

    题目分析 来源:acwing 分析:这道题还是flood fill算法的应用,不同点在于八个方向扫描,习惯性采用二重循环来扫描周围的8个方向:其次,这里需要统计周围比它高的和比它矮的,这点用bool变 ...

  5. JZOJ__Day 10:【普及模拟】【USACO】山峰暸望

    题目描述 一天,Bessie在眺望美丽的威斯康星的群山的时候,她突然产生了疑问:哪座山是最宽的捏?她决定在地平线上,利用她的新发明的山峰高度测量仪依次做N (1 <= N <= 10,00 ...

  6. graphpad如何做x轴在上方的图_R-ggridges包:山峰叠峦图

    很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...

  7. 左神算法:可见的山峰对数量(有重复值的情况)(Java版)

    本题来自左神<程序员面试代码指南>"可见的山峰对数量"题目. 题目 牛客在线OJ:可见的山峰对数量(进阶) 一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的 ...

  8. 山峰和山谷(信息学奥赛一本通-T1454)

    [题目描述] 给定一个 n×n 的网格状地图,每个方格 (i,j)有一个高度 wij​​ .如果两个方格有公共顶点,则它们是相邻的. 定义山峰和山谷如下: 均由地图上的一个连通块组成: 所有方格高度都 ...

  9. 密度图的密度估计_R-ggridges包:山峰叠峦图

    很忙,很久没有写文章.学习R绘图,这些都是我的兴趣爱好,并非我大的主业.也被我朋友说了很多次,别做这些没用的,既不能带来实际的收益,又耽误正事的时间. 但是我可能对绘图有着某种浓烈的兴趣吧,所以总是抽 ...

最新文章

  1. key mysql_mysql中key 、primary key 、unique key 与index区别
  2. 【Windows】清除win10开始菜单中失效打程序标签
  3. 数据结构---基础概念
  4. python3.8.5 应用程序无法启动-macos python3.8.5 打开摄像头问题
  5. jQueryMobile引入文件后样式无法正常显示
  6. 如意报表插件如何安装_Google Chrome浏览器如何安装插件应用
  7. 洛谷 1165日志分析
  8. python天气查询系统有什么知识点_Python入门 天气查询程序
  9. 智能一代云平台(三):15年上半年维护总结
  10. MATALB程序调试
  11. 好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字
  12. CFileFind的文件名大小写问题
  13. ios、android、h5、小程序等安卓苹果平台终端兼容问题
  14. 原生Android开发自学过程(二)之TextView基础属性
  15. android手机常用浏览器,Android手机 三大浏览器对比评测
  16. dva是什么游戏_守望先锋:DVA这个皮肤小蛮腰不算什么,全部细节是这个小脚丫...
  17. core dump的诡异事件
  18. java毕业生设计学籍管理系统计算机源码+系统+mysql+调试部署+lw
  19. 30句2018年精彩走心的文案,没事可以学习下,了解其中的文字意义
  20. 百度地图api初使用,行政区划及搜索

热门文章

  1. 地下水污染防治之源头防控
  2. 快速封装一个二维码在线生成接口
  3. python数据分析代码在哪里找到_[Python数据分析]NBA的球星们喜欢在哪个位置出手...
  4. 微金时代:小贷公司贷前调查的重要性和发展前景
  5. 解析第二代身份证号码
  6. 怎么学好ZBrush?初学者自学攻略,看完距离ZBrush建模大师又近一步
  7. 强引用、软引用、弱引用的区别和解析
  8. linux daemon命令用法,CentOS 6.8 使用start-stop-daemon命令
  9. AID Learning V0.87F3 使用说明文档
  10. 使用 iframe sandbox 时的注意点