寒假刷題19:單調棧例題(洛谷P5788)

題目鏈接:

單調棧

題目解析:

很裸的一道題......主要是爲了回顧一下單調棧的用法

小於棧頂元素直接入棧,反之彈出棧內所有不大於當前元素的數並記錄答案

保證了出棧元素單調增

AC代碼:

#include<bits/stdc++.h>
using namespace std;
int n;
int s[3000100],top=0,num[3000100];
int ans[3000100];
int main()
{
    scanf("%d",&n);
    int x;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        while(x>s[top] && top)
        {
            ans[num[top]]=i;
            top--;
        }
        s[++top]=x;
        num[top]=i;
    }
    for(int i=1;i<=n;i++) printf("%d ",ans[i]);
}

 

發佈了56 篇原創文章 · 獲贊 22 · 訪問量 6299
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章