内容简介:题目链接:分析:单调栈入门。依次向前模拟,直到找到比自己高的。
题目链接: http://poj.org/problem?id=3250
分析:单调栈入门。
依次向前模拟,直到找到比自己高的。
因为维护的是单调栈,那么就会保证之前的都能看到自己,统计答案,把该数放进栈中即可。
#include <cstdio>
#include <cstring>
#include <cctype>
#include <iostream>
#include <stack>
typedef long long ll;
static const int MAXN=100050;
using namespace std;
ll n,x,num,ans,s[MAXN];
inline void solve(ll x)
{
while(s[num]<=x&&num) num--;
ans+=num;
s[++num]=x;
}
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
solve(x);
}
printf("%lld\n",ans);
return 0;
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。