简单说两句

作者:后端小知识

个人主页:后端小知识

🔎GZH后端小知识

🎉欢迎关注🔎点赞👍收藏⭐️留言📝

题目: NC14893 栈和排序

考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目链接放下面!
题目传送门: NC14893 栈和排序

思路:

维护一个后缀最大值数组,就比较方便求了,具体的我们直接看代码!

我们来看看成功AC的代码吧:

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
int n;
int maxn[N],a[N];
stack<int> st;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=n;i>=1;i--) maxn[i]=max(a[i],maxn[i+1]);//维护后缀最大值
    for(int i=1;i<=n;i++){
        st.push(a[i]);
        while(!st.empty()&&st.top()>maxn[i+1]) {
            cout<<st.top()<<" "; st.pop();
        }
    }
    while(!st.empty()){//处理剩下的
        cout<<st.top()<<" "; st.pop();
    }
    return 0;
}

【都看到这了,点点赞点点关注呗,爱你们】😚😚

NC14893 栈和排序_栈

结语

谢谢你的阅读,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!😘😘😘