首页 > 其他 > 详细

【CodeVS3098】badhair

时间:2016-05-22 22:44:47      阅读:151      评论:0      收藏:0      [点我收藏+]

Description

有 N(1 ≤n ≤ 80,000) 头很关注自己发型的牛 站在一排 ,望着同一个方向。 每头牛都 有一个高度 hi (1 ≤ hi ≤ 1,000,000,000) 。每头牛只能看见自己前方比自己矮的的发型。请计算出所有牛能看到的发型总数

Input

第一行个整数: N
接下来 N行:每一个整数,表示第 i头牛的高度 hi

Output

一个整数,表示所有的牛能看到发型总。

Sample Input

6
10
3
7
4
12
2

Sample Output

5

HINT

1 ≤ N  ≤ 80,000

题解

维护一个单调递减的栈,栈的大小就是每个奶牛最多被看到多少次。

#include<iostream>
#include<cstdio>
#define N 80010
using namespace std;
long long s[N];
long long n,x,top,ans;
int main()
{
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        cin>>x;
        while (top && x>=s[top])
            top--;
        ans += top;
        s[++top] = x;
    }
    cout<<ans;
}

 

 

【CodeVS3098】badhair

原文:http://www.cnblogs.com/liumengyue/p/5517882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!