首页 > 其他分享 >AcWing 830.单调栈

AcWing 830.单调栈

时间:2022-09-24 00:22:52浏览次数:46  
标签:830 数列 idx int 整数 单调 AcWing

AcWing 830.单调栈

题目描述

给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。

输入格式

第一行包含整数 N
,表示数列长度。

第二行包含 N
个整数,表示整数数列。

输出格式

共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。

数据范围

1≤N≤10^5
1≤数列中元素≤10^9

输入样例

5
3 4 2 7 5

输出样例

-1 3 -1 2 2

题目思路

单调栈模板题,用栈来存上一个比它更小的数;利用单调栈的性质,如果栈中的数比当前的数要大,那么它再也不会被用到,直接弹出,直到找到比当前这个数要小的数。

#include<cstdio>
#include<iostream>

using namespace std;

const int N = 1e5+10;
int stack[N],idx;

int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int t;
        scanf("%d",&t);
        while(idx&&stack[idx]>=t)idx--;
        if(idx&&stack[idx]<t)printf("%d ",stack[idx]);
        else printf("-1 ");
        stack[++idx] = t;
    }
    
    return 0;
}

标签:830,数列,idx,int,整数,单调,AcWing
From: https://www.cnblogs.com/fsh001/p/16724740.html

相关文章

  • acwing894. 拆分-Nim游戏
    acwing894.拆分-Nim游戏原题链接:https://www.acwing.com/problem/content/896/思路关于SG函数,mex操作,SG定理的一些知识取走一堆放入两堆,好像总的堆数一直在增加,但是每......
  • acwing892. 台阶-Nim游戏
    acwing892.台阶-Nim游戏原题链接:https://www.acwing.com/problem/content/894/思路奇数台阶异或和不等于0先手必胜奇数台阶异或和等于0先手必败代码#include<iost......
  • 吔队列了你——写点单调队列优化DP
    5_Lei:有没有变态一点的图啊单调队列优化DP(补)前言:DP显然是OI中的一个重要且高频的考点,然而友善的出题人大多不会只考一个推转移方程,往往需要结合一些优化。单调队列:......
  • 博弈论-acwing893.集合-Nim游戏
    补充知识有向图游戏给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿着有向边方向移动,每次可以移动一步,无法移动者判负。该游......
  • AcWing 133/洛谷2827 蚯蚓
    首先考虑根据题意模拟#include<bits/stdc++.h>#defineintlonglong//懒死谁了usingnamespacestd;typedeflonglongllinlinevoidrd(int&x){x=0;b......
  • AcWing 算法提高课 欧拉回路和欧拉路径
    定义:经过每一条边且每一条边恰好只经过一次一、无向图中,当所有边都连通时:存在欧拉路径,等价于,图中度为奇数的点只有0或2个。存在欧拉回路,等价于,图中度为奇数的点只有0个......
  • 博弈论-acwing891.Nim游戏
    博弈论acing891.Nim游戏原题链接:https://www.acwing.com/problem/content/893/公平组合游戏若一个游戏满足:1.由两名玩家交替行动2.在游戏进行的任意时刻,可以执行的合......
  • 单调栈
    一、应用场景通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置。以空间换时间,复杂度为O(n)。二、思路(1)单调栈里面放的是元素下标i(比较的时......
  • AcWing 算法提高课 强连通分量
    1、Tarjan算法求强连通分量: 强连通分量的点可能会向上联通。  维护两个时间戳。 ......
  • AcWing 4604. 集合询问
    https://www.acwing.com/problem/content/4607/哈希表题意:初始时空集{},进行t次操作,操作分为:+x,将一个非负整数x添加至集合中。注意,集合中可以存在多个相同的整......