标签:
Description
Input
Output
Sample Input
7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0
Sample Output
8 4000
学习了下单调栈写法。
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<bitset> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) typedef long long LL; typedef pair<int,int>pil; const int INF = 0x3f3f3f3f; const int maxn=1e5+100; struct node{ int val; int pos; }; stack<node>s; int n,a[maxn]; int main() { node st; while(~scanf("%d",&n)&&n) { REPF(i,1,n) scanf("%d",&a[i]); st.val=st.pos=0; s.push(st);LL ans=0; for(int i=1;i<=n;i++) { st.pos=i; while(s.top().val>a[i]) { st=s.top(); s.pop(); LL temp=(LL)st.val*(i-st.pos); ans=max(ans,temp); } st.val=a[i]; s.push(st); } while(!s.empty()) { st=s.top(); LL temp=(LL)st.val*(n-st.pos+1); ans=max(ans,temp); s.pop(); } printf("%I64d\n",ans); } return 0; } /* */以前习惯这样写。
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<string> #include<iostream> #include<queue> #include<cmath> #include<map> #include<stack> #include<bitset> using namespace std; #define REPF( i , a , b ) for ( int i = a ; i <= b ; ++ i ) #define REP( i , n ) for ( int i = 0 ; i < n ; ++ i ) #define CLEAR( a , x ) memset ( a , x , sizeof a ) typedef long long LL; typedef pair<int,int>pil; const int INF = 0x3f3f3f3f; const int maxn=1e5+100; int l[maxn],r[maxn]; int n,num[maxn]; int main() { while(~scanf("%d",&n)&&n) { REPF(i,1,n) scanf("%d",&num[i]); l[1]=1; REPF(i,2,n) { int pos=i; while(pos-1>=1&&num[i]<=num[pos-1]) pos=l[pos-1]; l[i]=pos; } r[n]=n; for(int i=n-1;i>=1;i--) { int pos=i; while(pos+1<=n&&num[i]<=num[pos+1]) pos=r[pos+1]; r[i]=pos; } LL ans=0; REPF(i,1,n) ans=max(ans,(LL)num[i]*(r[i]-l[i]+1)); printf("%lld\n",ans); } return 0; }
POJ 2559 Largest Rectangle in a Histogram(单调栈)
标签:
原文地址:http://blog.csdn.net/u013582254/article/details/45999933