美文网首页DataStructure
HDU-1506(单调栈)

HDU-1506(单调栈)

作者: 雨落八千里 | 来源:发表于2019-06-10 20:00 被阅读0次

单调栈

一系列数寻找一个子序列,子序列的长度乘以子序列中的最小值使得这个值最大

Hdu 1506 Largest Rectangle in a Histogram

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll h[100100];
ll R[100100];
ll L[100100];
stack<ll> s;
int main( )
{
      int n;
      while(cin>>n&&n)
      {
            while(!s.empty( ))
            {
                  s.pop( );
            }
            for(int i=0;i<n;i++)
            {
                  cin>>h[i];
            }
            for(int i=0;i<n;i++)
            {
                  while(!s.empty( )&&h[s.top( )]>=h[i])
                  {
                        s.pop( );
                  }
                  if(s.empty( ))
                  {
                        L[i]=0;
                  }
                  else
                  {
                        L[i]=s.top( )+1;
                  }
                  s.push(i);
            }
            while(!s.empty( ))
            {
                  s.pop( );
            }
            for(int i=n-1;i>=0;i--)
            {
                  while(!s.empty( )&&h[s.top( )]>=h[i])
                  {
                        s.pop( );
                  }
                  if(s.empty( ))
                  {
                        R[i]=n;
                  }
                  else
                  {
                        R[i]=s.top( );
                  }
                  s.push(i);
            }
            ll ans=-1;
            for(int i=0;i<n;i++)
            {
                  ans=max(ans,h[i]*(R[i]-L[i]));
            }
            cout<<ans<<endl;
      }
      return 0;
}

相关文章

  • HDU-1506(单调栈)

    单调栈 一系列数寻找一个子序列,子序列的长度乘以子序列中的最小值使得这个值最大 Hdu 1506 Largest ...

  • 单调栈和应用实践

    什么是单调栈 单调栈的定义:单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。 如何使用单调栈 单调...

  • 1.单调栈

    一、单调栈定义 单调栈(monotone-stack)是指栈内元素(栈底到栈顶)都是(严格)单调递增或者单调递减的...

  • 单调栈 2020-06-12(未经允许,禁止转载)

    1.单调栈 指栈内元素保持单调性的栈结构,分为单调增栈(栈底到栈顶元素递增)和单调减栈(栈底到栈顶元素递减) 2....

  • LeetCode刷题指北----单调栈

    1.什么是单调栈?有什么好处? 定义: 单调栈就是栈内元素递增或者单调递减的栈,并且只能在栈顶操作。单调栈的维护是...

  • C语言之单调栈

    单调栈 What 单调栈也是栈的一种,满足先进后出的原则,另外,单调栈中的元素是有序的,分为两种 单调递增栈:单调...

  • 腾讯笔试--逛街

    主要的知识点是:单调栈,该题牢牢记得:栈中记录当前楼能看到的元素 单调栈是单调递增栈,栈顶是最小值单调栈存的是能看...

  • 题解——单调栈

    单调栈题解 单调栈结构 牛客链接 方法:单调栈 算法 这里维护一个单调递增栈,可以找到比当前元素要小的元约定:当前...

  • 单调栈

    leetcode - 42. 接雨水单调栈即元素严格单调递增或单调递减的栈,只需要在元素入栈的时候保持栈的单调性即...

  • Java版算法模版总结(2)

    本次233酱介绍下单调栈、单调队列、并查集、KMP算法,欢迎交流指正~ 单调栈 「单调栈」首先是一种基于栈的数据结...

网友评论

    本文标题:HDU-1506(单调栈)

    本文链接:https://www.haomeiwen.com/subject/kzmtfctx.html