博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
山峰(codevs 1531)
阅读量:5228 次
发布时间:2019-06-14

本文共 1013 字,大约阅读时间需要 3 分钟。

1531 山峰

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 
 
 
题目描述 
Description

Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, ……, n。每个山峰的高度都是不一样的。编号为i的山峰高度为hi。

小修从西往东登山。每到一座山峰,她就回头观望自己走过的艰辛历程。在第i座山峰,她记录下自己回头能看到的山峰数si。

何谓“能看到”?如果在第i座山峰,存在j<k<i,hj<hk,那么第j座山峰就是不可见的。除了不可见的山峰,其余的山峰都是可见的。

回家之后,小修把所有的si加起来得到S作为她此次旅行快乐值。现在n座山峰的高度都提供给你了,你能计算出小修的快乐值吗?

输入描述 
Input Description

第一行一个整数n(n<=15000)。

第i+1(1<=i<=n)行是一个整数hi(hi<=109)。

输出描述 
Output Description

仅一行:快乐值。

样例输入 
Sample Input

5

2

1

3

5

9

样例输出 
Sample Output

5

数据范围及提示 
Data Size & Hint

说明:s1=0, s2=1, s3=2, s4=1, s5=1。

//单调栈 #include
#include
#define M 15010using namespace std;int s[M];int main(){ int n,top=0,sum=0; scanf("%d",&n); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); sum+=top; while(s[top]
0) top--; s[++top]=x; } printf("%d",sum); return 0;}
View Code

 

转载于:https://www.cnblogs.com/harden/p/5619123.html

你可能感兴趣的文章
Day004课程内容
查看>>
调整显示屏幕偏移和刷新频率[zt]
查看>>
There are no accidents.
查看>>
图片与文本的对齐方式
查看>>
ABAP 仓库理货单导出
查看>>
C#获取客户端浏览器信息
查看>>
剑指Offer——删除链表中重复的结点
查看>>
大数相乘练习
查看>>
CentOS 7开机启动脚本
查看>>
超像素分割, 并获取每一个分区
查看>>
shell提示符显示git当前分支
查看>>
iTextSharp生成pdf文档案例
查看>>
设置IIS7/IIS7.5的FTP支持断点续传
查看>>
JPA规范及其它持久层框架
查看>>
CentOS 6 安装Syslog-ng
查看>>
hdu Rikka with string (dfs)
查看>>
我的第一条博客
查看>>
http://qiye.qianzhan.com/ 企业查询宝
查看>>
unity3d-解密加密数据
查看>>
异步多线程处理
查看>>