POJ3250-单调栈
一个单调栈搞了我半天果然我是乐色了
一开始疯狂WA 后来发现是s.top()<=h要有等于号hhhhhhh
#include <iostream>
#include <stack>
#include <stdio.h>
using namespace std;
int main()
{
long long n,ans=0,h;
scanf("%lld",&n);
stack<long long> s;
for(int i=0;i<n;i++)
{
scanf("%d",&h);
while((!s.empty())&&s.top()<=h){
s.pop();}
ans+=s.size();
s.push(h);
}
printf("%lld",ans);
return 0;
}
单调栈模板:
#include<stack>
stack<int> s;
for(int i = 1; i <= n; ++i)
{
while(s.size() && a[s.top()] >= a[i]) s.pop();
if(s.empty()) l[i] = 0;
else l[i] = s.top();
s.push(i);
}