山峰(codevs 1531)
2016-06-27 08:32
267 查看
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<cstdio> #include<iostream> #define M 15010 using 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]<x&&top>0) top--; s[++top]=x; } printf("%d",sum); return 0; }
View Code
相关文章推荐
- Android 点击实现打电话
- Pull解析网络请求文件
- oracle 聚簇因子的一些理解
- Android中 File存储
- 背水一战 Windows 10 (19) - 绑定: TemplateBinding 绑定, 与 RelativeSource 绑定, 与 StaticResource 绑定
- 自定义ListView,实现下拉刷新,上拉加载
- 百度地图基本地图和定位
- APP测试体系
- Nodejs之MEAN栈开发(四)---- form验证及图片上传
- 如何让richTextBox的滚动条始终处于最下方显示最新数据
- 关于scrapy有用的链接
- 从0开始学习 GitHub 系列之「Git 进阶」
- 自定义EditText编辑框
- 如何在PowerBuilder与DLL之间传递参数
- WWDC-UIKit 中协议与值类型编程实战
- ASCII ,Unicode ,UTF-8
- iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略
- Linux面试
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
- 为什么objc_msgSend必须用汇编实现