POJ-3250-Bad Hair Day

来源:互联网 发布:淘宝优惠券有什么猫腻 编辑:程序博客网 时间:2024/05/27 20:17

这个题用类似单调队列的思想,并反过来思考,想每个牛能被多少牛看到,那么在这之前如果有小于等于当前牛高度的那么一定看不到了。

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<stack>using namespace std;const int maxn=8e4+100;int n,a[maxn];stack<int> s;int main(){    while(scanf("%d",&n)!=EOF)    {        while(!s.empty())            s.pop();        for(int i=1;i<=n;i++)            scanf("%d",&a[i]);        long long ans=0;        for(int i=1;i<=n;i++)        {            while(!s.empty()&&s.top()<=a[i])                s.pop();            ans+=s.size();            s.push(a[i]);        }         printf("%I64d\n",ans);    }    return 0;}


0 0