zoukankan      html  css  js  c++  java
  • bzoj1660:乱发节

    一开始就陷入误区了,因为总是想着这头牛能看到几头牛这个点去考虑,然而那样的话基本都会爆的但是又想不出怎么优化,网上的题解。从另一方面考虑就好了,就是这一头牛能被多少头牛看到再加上栈的应用就ok了。

    -------------------------------------------------------------------------------

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<deque>
    #include<stack>
    using namespace std;
    #define ll long long
    const int nmax=80005;
    ll n,a[nmax];
    stack<ll>q;
    int main(){
     scanf("%lld",&n);
     for(ll i=1;i<=n;i++)
       scanf("%lld",&a[i]);
     q.push(a[1]);
     ll ans=0,cur=1;
     for(ll i=2;i<=n;i++){
      if(a[i]>=q.top()){
       while(!q.empty()&&a[i]>=q.top()){
        q.pop();
        cur--;
       }
       q.push(a[i]);
       ans+=cur;
       cur++;
      }
      else{
       ans+=cur;
       q.push(a[i]);
       cur++;
      }
     }
     printf("%lld ",ans);
     return 0;
    }

    -----------------------------------------------------------------------------------

  • 相关阅读:
    矩阵运算(二维数组)
    AndroidManifest.xml
    单位和尺寸
    java Map集合类
    http相关
    文件管理与XMl、JSON解析
    Handler与多线程
    App内容分享
    Fragment以及懒加载
    广播接收器与短信
  • 原文地址:https://www.cnblogs.com/20003238wzc--/p/4824082.html
Copyright © 2011-2022 走看看