stack No.2山峰问题

哈哈  想起是暑假在美国第一个题目  值得纪念!!

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<stack>
 5 using namespace std;
 6 int N,h[15010],n;//n是栈里的元素数量   N是一共有多少山
 7 stack<int> s;//建立一个栈
 8 int ans;
 9
10 int main()
11 {
12 scanf("%d",&N);
13 for(int i=1;i<=N;i++)
14 {
15 scanf("%d",&h[i]);
16 ans+=n;//到达下一个山峰  加上之前栈里的元素
17 while(n&&h[i]>s.top())//当当前山高度高于前一座山高度 出栈
18    {
19        s.pop();
20        n--;
21    }
22 s.push(h[i]);//把当前高度入栈
23 n++;
24 }
25 printf("%d",ans);
26 return 0;
27 } 
时间: 2024-10-10 06:26:45

stack No.2山峰问题的相关文章

CODEVS-1531 山峰

题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi. 小修从西往东登山.每到一座山峰,她就回头观望自己走过的艰辛历程.在第i座山峰,她记录下自己回头能看到的山峰数si. 何谓"能看到"?如果在第i座山峰,存在j<k<i,hj<hk,那么第j座山峰就是不可见的.除了不可见的山峰,其余的山峰都是可见的. 回家之后,小修把所有的si加起来得到S作为她此次旅

1531 山峰

1531 山峰 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, ……, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi. 小修从西往东登山.每到一座山峰,她就回头观望自己走过的艰辛历程.在第i座山峰,她记录下自己回头能看到的山峰数si. 何谓“能看到”?如果在第i座山峰,存在j<k<i,hj<hk,那么第j座山峰就

51nod1289 stack

1289 大鱼吃小鱼 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右).问足够长的时间之后,能剩下多少条鱼? Input 第1行:1个数N,表示鱼的数量(1 <= N <= 100000). 第2 - N + 1行:每行两个数A[i], 

How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu

About LAMP LAMP stack is a group of open source software used to get web servers up and running. The acronym stands for Linux, Apache, MySQL, and PHP. Since the virtual private server is already running Ubuntu, the linux part is taken care of. Here i

Stack的pop和push操作

#include <stack> #include <cstdio> using namespace std; int main(){ stack<int> s; s.push(1); s.push(2); s.push(3); printf("%d\n", s.top()); s.pop(); printf("%d\n", s.top()); s.pop(); printf("%d\n", s.top());

从头认识java-9.8 栈(Stack)

这一章节我们来讨论一下栈(Stack). 1.特性 先进后出,当一个元素压进栈里面,他就会处于栈的底部,然后,另一个再压进来,盖在原来的元素上面,原来的元素想出去,只有等上面的元素先顶出栈才有机会. 2.方法演示 package com.ray.ch09; import java.util.Arrays; import java.util.Stack; public class Test { public static void main(String[] args) { Stack<Integ

C#中泛型容器Stack&lt;T&gt;的用法,以及借此实现&rdquo;撤销/重做&rdquo;功能

.Net为我们提供了众多的泛型集合.比如,Stack<T>先进后出,Queue<T>先进先出,List<T>集合元素可排序,支持索引,LinkedList<T>,双向链表的泛型实现,不支持索引;ISet<T>不允许被复制,他有2个实现,一个是HashSet<T>,不维持集合元素的排序,另一个是SortedSet<T>,支持集合元素的排序;IDictionary<TKey, TValue>是一个字典集合的泛型接口

Improving performance – A full stack problem

Improving performance – A full stack problem March 6, 2015 by ronald 4 Comments Improving the performance of a web system involves knowledge of how the entire technology stack operates and interacts. There are many simple and common tips that can pro

LeetCode Min Stack

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. getMin() -- Retrieve the minimum e