码迷,mamicode.com
首页 > 其他好文 > 详细

[BZOJ1660][Usaco2006 Nov]Bad Hair Day 乱发节

时间:2017-09-07 20:21:41      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:inpu   line   out   bbs   discuss   ret   online   高度   blog   

1660: [Usaco2006 Nov]Bad Hair Day 乱发节

Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 1204  Solved: 589 [Submit][Status][Discuss]

Description

技术分享

Input

* Line 1: 牛的数量 N。

 * Lines 2..N+1: 第 i+1 是一个整数,表示第i头牛的高度。

Output

* Line 1: 一个整数表示c[1] 至 c[N]的和。

Sample Input

6
10
3
7
4
12
2


输入解释:

六头牛排成一排,高度依次是 10, 3, 7, 4, 12, 2。

Sample Output

5

3+0+1+0+1=5
 
单调栈维护一个身高递减序列,注意是从n到1
#include <cstdio>
const int maxn = 80000 + 10;
int h[maxn], sta[maxn], top = 0;
int main(){
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) scanf("%d", h + i);
    h[n + 1] = 1 << 30;
    sta[top = 1] = n + 1;
    long long ans = 0;
    for(int i = n; i; i--){
        while(top && h[i] > h[sta[top]]) top--;
        ans += sta[top] - i - 1;
        sta[++top] = i;
    }
    printf("%lld\n", ans);
    return 0;
}

 

[BZOJ1660][Usaco2006 Nov]Bad Hair Day 乱发节

标签:inpu   line   out   bbs   discuss   ret   online   高度   blog   

原文地址:http://www.cnblogs.com/ruoruoruo/p/7491475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!