山峰(单调栈)
来源:互联网 发布:龙卷风收音机mac 编辑:程序博客网 时间:2024/04/28 15:34
山峰
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
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 <= 10^6),表示山峰的个数。
接下来一行n个数,表示对应山峰的山峰的高度(1 <= h <= 10^6)。
Output
输出小木示的快乐值
Example Input
4
1 6 5 1
Example Output
4
单调栈的应用,当山高的时候,把栈内比他低的弹出。
#include <bits/stdc++.h>using namespace std;int main(){ int n; while(~scanf("%d", &n)) { stack<int> q; q.push(1212111);//保证栈是非空的 long long int k = 0; for(int i=0;i<n;i++) { int x; scanf("%d", &x); k = k + q.size() - 1; while(x>q.top()) q.pop(); q.push(x); } cout<<k<<endl; } return 0;}
阅读全文
0 0
- 单调栈(山峰)
- 山峰(单调栈)
- Codevs1531 山峰 单调栈
- 单调栈模型--山峰
- 【数据结构】CODE[VS] 1531 山峰 (单调栈维护单调递减序列)
- Codevs 1531 山峰(简单栈)
- 山峰
- 山峰
- 山峰
- 山峰
- D3D自学笔记(山峰)
- poj3250(单调栈)
- FZU2190(单调栈)
- poj2796 (单调栈)
- 单调栈(模板)
- question (单调栈)
- poj2082(单调栈)
- SDUT-山峰---栈的单步调用
- QT初学 常用控件(Label pushbotton radio Slider...)代码创建方式
- leetcode --24. Swap Nodes in Pairs
- Ambari-2.2.2.0文档翻译--安装配置与部署
- 根据条件、参数使用EXPDP和IMPDP导入导出Oracle数据库
- spring创建多例
- 山峰(单调栈)
- Unity Json转换Sring类型,用于socokect传送消息
- 对象流(ObjectOutputStream 和 ObjectInputStream)
- 两个栈实现一个队列&&两个队列实现一个栈
- jdk环境变量配置与eclipse java开发的基本操作
- PL-SQL 编程(二)游标、存储过程、函数
- 利用YUM进行查询、安装、升级与删除功能
- spring学习之事务管理器
- 安装Selenium&PhantomJS