单调栈(模版
Posted hhyx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单调栈(模版相关的知识,希望对你有一定的参考价值。
# 题意
n个数的整数序列,输出每个数左边第一个比它小的数,不存在输出-1
# 题解
输出左边第一个比当前数小的数,栈中存的数是单调上升的,因为后加入的数永远比前加入的数靠后,所以在新加入数的时候只会先考虑后加入的,只有前面的数比后加入的小才会被考虑到,所以栈中只会存单调上升的序列
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int n; 5 int stk[N],tt; 6 int main(){ 7 ios::sync_with_stdio(0); 8 cin.tie(0); 9 cout.tie(0); 10 cin>>n; 11 while(n--){ 12 int x; 13 cin>>x; 14 while(tt&&x<=stk[tt]) 15 tt--; 16 if(tt) cout<<stk[tt]<<‘ ‘; 17 else cout<<"-1"<<‘ ‘; 18 stk[tt++]=x; 19 } 20 }
以上是关于单调栈(模版的主要内容,如果未能解决你的问题,请参考以下文章