zoukankan      html  css  js  c++  java
  • 洛谷 P2866 [USACO06NOV]糟糕的一天Bad Hair Day

    题目描述

    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 ≤ hi ≤ 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.

    农民约翰的某N(1 < N < 80000)头奶牛正在过乱头发节!由于每头牛都意识到自己凌乱不堪 的发型,约翰希望统计出能够看到其他牛的头发的牛的数量.

    每一头牛i有一个高度所有N头牛面向东方排成一排,牛N在最前面,而 牛1在最后面.第i头牛可以看到她前面的那些牛的头,只要那些牛的高度严格小于她的高度,而且 中间没有比hi高或相等的奶牛阻隔.

    让N表示第i头牛可以看到发型的牛的数量;请输出Ci的总和

    输入输出格式

    输入格式:

    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.

    输入输出样例

    输入样例#1:
    6
    10
    3
    7
    4
    12
    2
    输出样例#1:
    5


    维护一个栈 比当前低的直接覆盖到比他次低的高度
    然后统计和
    屠龙宝刀点击就送
    #include <ctype.h>
    #include <cstdio>
    #define gt ch=getchar()
    #define N 80010
    
    void read(int &x)
    {
        x=0;bool f=0;
        char ch;gt;
        while(!isdigit(ch))
        {
            if(ch=='-') f=1;
            gt;
        }
        while(isdigit(ch))
        {
            x=x*10+ch-'0';
            gt;
        }
        x=f?(~x)+1:x;
    }
    int n,h[N],top,stack[N];
    int main()
    {
        read(n);
        for(int i=1;i<=n;i++) read(h[i]);
        h[n+1]=1<<30;
        long long ans=0;
        for(int i=1;i<=n+1;i++)
        {
            while(top&&h[stack[top]]<=h[i])
            {
                ans+=i-stack[top]-1;
                top--;
            }
            stack[++top]=i;
        }
        printf("%lld",ans);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    php命令注入
    mysql事物
    安装php环境
    移除服务器缓存实例
    show user profile synchronization tools
    manual start user profile import
    JSON is undefined. Infopath Form People Picker in SharePoint 2013
    asp.net web 应用站点支持域账户登录
    Load sharepoint envirement by powershell
    sharepoint 2016 download
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6792416.html
Copyright © 2011-2022 走看看