zoukankan      html  css  js  c++  java
  • [JZOJ1264] 乱头发节

    Description

      农民John的某 N 头奶牛 (1 <= N <= 80,000) 正在过乱头发节!由于每头牛都意识到自己凌乱不堪的发型,FJ 希望统计出能够看到其他牛的头发的牛的数量。   每一头牛 i有一个高度 h[i] (1 <= h[i] <= 1,000,000,000)而且面向东方排成一排(在我们的图中是向右)。因此,第i头牛可以看到她前面的那些牛的头,(即i+1, i+2,等等),只要那些牛的高度严格小于她的高度。
           每一头牛 i有一个高度 h[i] (1 <= h[i] <= 1,000,000,000)而且面向东方排成一排(在我们的图中是向右)。因此,第i头牛可以看到她前面的那些牛的头,(即i+1, i+2,等等),只要那些牛的高度严格小于她的高度。

    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

    Sample Output

      5

    Summary

      维护一条单调栈,如果出现了比栈中高的奶牛,那么这头奶牛就看不到之后的的奶牛,对答案失去了贡献。

     1 #include<cstdio>
     2 using namespace std;
     3 int n,tot;
     4 long long a[100000],d[100000],ans;
     5 int main()
     6 {
     7     scanf("%d",&n);
     8     for (int i=1;i<=n;i++)
     9     {
    10         scanf("%d",&a[i]);
    11         while (tot!=0&&d[tot]<=a[i])
    12             tot--;
    13         d[++tot]=a[i];
    14         ans=ans+tot-1;
    15     }
    16     printf("%lld",ans);
    17 }
    View Code
  • 相关阅读:
    利用django form 模块处理post请求
    linux 下安装JDK
    java常用日期操作方法
    Git常见命令整理
    使用Java实现八种基本排序
    java验证类ValidUtils
    封装一个既能遍历数组又能遍历对象的的forEach函数
    结合canvas做雨滴特效
    前端常用js脚本
    canvas 视频音乐播放器
  • 原文地址:https://www.cnblogs.com/Tokisaki-Kurumi/p/9325978.html
Copyright © 2011-2022 走看看