zoukankan      html  css  js  c++  java
  • P5788 【模板】单调栈

    ----------------

    链接:Miku

    ----------------

    单调栈模板终于不是一堆蓝题了!!!!!!!!!!!!

    单调栈,就是单调的栈,栈内元素都是单调的。

    题目要求我们求出来第一个比i大的元素的下标,那么我们就可以用一个递减单调栈解决。

    每一个元素入栈时,和栈顶比较一下,如果比他大,那他一定是第一个比它大的。所以说记录弹出就行。

    重复这个过程,知道栈空了或者说比栈顶小了,再把新元素放进去。

    -------------------

    #include<iostream>
    #include<stack>
    #include<cstdio>
    using namespace std;
    long long  n;
    //stack <long long > s;
    long long  ans[4000001];
    long long  x;
    struct s{
        long long  v;
        long long  num;
    }now;;
    stack <s> ss;
    int  main(){
        cin>>n;
        for(long long  i=1;i<=n;++i){
            scanf("%d",&now.v);
            now.num=i;
            if(ss.empty()){
                ss.push(now);
                continue;
            }
            while(!ss.empty()&&ss.top().v<now.v){
                ans[ss.top().num]=i;
                ss.pop();
            }
            ss.push(now);
        }
        for(long long  i=1;i<=n;++i){
            printf("%d ",ans[i]);
        }
        return 0;
    }
    Ac
  • 相关阅读:
    用户输入
    hashlib 加密
    vue-cli项目配置mock数据(新版本)
    vue-cli 本地开发mock数据使用方法
    使用nodeJs安装Vue-cli
    购物车实现三
    购物车实现二
    购物车实现一
    极限开发与敏捷开发
    敏捷软件开发-极限编程
  • 原文地址:https://www.cnblogs.com/For-Miku/p/12210406.html
Copyright © 2011-2022 走看看