質問A:[Usaco2006月] Mooo牛の歌

 

数ヶ月前、zxr dalao学校で約単調なスタックを話した単調なスタックは、まだ疑問のこの質問の意味のいくつか理解しているためので、音だけでその牛よりも高さが大きい聞くことができる、すなわち、それぞれの牛のみを聞くことができます彼の高さの音牛よりも短いです。

だから我々は、そのスタックをポップアップ表示されますよりも、牛に遭遇減少スタック単調なモノトーンを維持する必要があり、高い牛の音のもう一方の端は、牛の音はポップ・スタックの和です。

 

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+7;
int n;
int h[maxn];
int v[maxn];
int sta[maxn];
int ans[maxn];
int top;
int maxx;
void dandiaozhan()
{
    for(int i=1;i<=n;i++)
    {
        while(top&&h[i]>h[sta[top]])
        {
            ans[i]+=v[sta[top]];
            top--;
        }
        sta[++top]=i;
    }
    top=0;
    for(int i=n;i>=1;i--)
    {
        while(top&&h[i]>h[sta[top]])
        {
            ans[i]+=v[sta[top]];
            top--;
        }
        sta[++top]=i;
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&h[i],&v[i]);
    }
    dandiaozhan();
    for(int i=1;i<=n;i++)
    {
        maxx=max(ans[i],maxx);
    }
    printf("%d",maxx);
    return 0;
}

 

おすすめ

転載: www.cnblogs.com/LJB666/p/10994568.html