zoukankan      html  css  js  c++  java
  • 1686: Bad Hair Day(单调栈)

    1686: Bad Hair Day 分享至QQ空间

    时间限制(普通/Java):2000MS/20000MS     内存限制:65536KByte
    总提交: 68            测试通过:31

    描述

     

    Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self-conscious about her messy hairstyle, FJ wants to count the number of other cows that can see the top of other cows' heads.

    Each cow i has a specified height hi (1 ≤ h≤ 1,000,000,000) and is standing in a line of cows all facing east (to the right in our diagrams). Therefore, cow i can see the tops of the heads of cows in front of her (namely cows i+1, i+2, and so on), for as long as these cows are strictly shorter than cow i.

    Consider this example:

            =
    =       =
    =   -   =         Cows facing right -->
    =   =   =
    = - = = =
    = = = = = =
    1 2 3 4 5 6

    Cow#1 can see the hairstyle of cows #2, 3, 4
    Cow#2 can see no cow's hairstyle
    Cow#3 can see the hairstyle of cow #4
    Cow#4 can see no cow's hairstyle
    Cow#5 can see the hairstyle of cow 6
    Cow#6 can see no cows at all!

    Let ci denote the number of cows whose hairstyle is visible from cow i; please compute the sum of c1 through cN.For this example, the desired is answer 3 + 0 + 1 + 0 + 1 + 0 = 5.

    输入

    Line 1: The number of cows, N
    Lines 2..N+1: Line i+1 contains a single integer that is the height of cow i.

    输出

    Line 1: A single integer that is the sum of c1 through cN.

    样例输入

     

    6
    10
    3
    7
    4
    12
    2

    样例输出

     5

    题目来源

    USACO November 2006

    解题思路:  题目意思 第i个能看到知道比其大或者相等之前的所有牛!  维护一个单调递减的栈,如果新来的元素比栈顶元素小那栈中的元素都可以看到它 相反那之前的哪些都没用了 都被这个高的给挡住了!

     1 //
     2 #include <iostream>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdio>
     6 #include <vector>
     7 using namespace std;
     8 
     9 typedef long long ll;
    10 const int N=80005;
    11 int sta[N];
    12 int n,d;
    13 ll res;
    14 
    15 int main(){
    16     ios::sync_with_stdio(false);
    17     int top=1;
    18     cin>>n;
    19     cin>>d;
    20     sta[1]=d;
    21     for(int i=2;i<=n;i++){
    22         cin>>d;
    23         while(d>=sta[top]&&top) top--;
    24         res+=top;  //在其前面的都能看到他
    25         sta[++top]=d;
    26     }
    27     cout << res << endl;
    28     return 0;
    29 }
    View Code
  • 相关阅读:
    python爬虫面试总结
    Android 开发之避免被第三方使用代理抓包
    类的惰性属性
    [转载]Python: 你不知道的 super
    转 白话解析:一致性哈希算法 consistent hashing
    转 appium解决每次运行都需要安装Unlock以及AppiumSetting的问题
    233
    windows中Appium-desktop配合夜神模拟器的使用
    CentOS 6.4 添加永久静态路由所有方法汇总(原创)
    牛逼的lsof命令!!!
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/11345172.html
Copyright © 2011-2022 走看看