POJ-3250-Bad Hair Day

這個題用類似單調隊列的思想,並反過來思考,想每個牛能被多少牛看到,那麼在這之前如果有小於等於當前牛高度的那麼一定看不到了。

代碼:

#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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章