1 条题解

  • 0
    @ 2024-11-20 13:14:52

    单调栈

    本题是单调栈的简单模板题

    单调栈是指在栈内部维护单调性 如果不满足单调性就弹栈

    单调性如下图

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+7;
    int st[N],h[N];
    int top,n;
    int ans[N];
    int main(){
        cin>>n;
        for(int i=1; i<=n; i++)cin>>h[i];
        for(int i=n; i>0; i--){
            while(top&&h[st[top]]<=h[i])top--;
            if(!top)ans[i]=0;
            else ans[i]=st[top];
            st[++top]=i;
        }
        for(auto i=1; i<=n; i++)cout<<ans[i]<<'\n';
        return 0;
    }
    

    信息

    ID
    6977
    时间
    1000ms
    内存
    500MiB
    难度
    3
    标签
    递交数
    9
    已通过
    6
    上传者