P5788 模板 單調棧

2021-10-07 14:49:56 字數 854 閱讀 2123

5788

題目背景

模板題,無背景。

2019.12.12 更新資料,放寬時限,現在不再卡常了。

題目描述

給出項數為 nn 的整數數列 a_a

1…n​

。定義函式 f(i)f(i) 代表數列中第 ii 個元素之後第乙個大於 ai

的元素的下標,即 f(i)=\min_ f(i)=miniai

​​ 。若不存在,則 f(i)=0f(i)=0。

試求出 f(1\dots n)f(1…n)。

輸入格式

第一行乙個正整數 nn。

第二行 nn 個正整數 a_a

1…n​

。輸出格式

一行 nn 個整數 f(1\dots n)f(1…n) 的值。

輸入輸出樣例

輸入 #1複製

51 4 2 3 5

輸出 #1複製

2 5 4 5 0

#include

#include

#include

using

namespace std;

const

int maxn =

3e6+5;

int a[maxn]

, res[maxn]

;int s[maxn]

;int

main()

int top =0;

for(

int i = n; i >=

1; i--

)for

(int i =

1; i <= n; i++

)return0;

}

P5788 模板 單調棧

題目背景 模板題,無背景。2019.12.12 更新資料,放寬時限,現在不再卡常了。題目描述 給出項數為 nnn 的整數數列 a1 na a1 n 定義函式 f i f i f i 代表數列中第 iii 個元素之後第乙個大於 aia iai 的元素的下標,即 f i min iaif i min f...

單調棧 模板 單調棧模板

biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...

單調棧模板

顧名思義就是棧裡的元素是單調的。但是這個怎麼使用呢?怎麼就能是單調的呢?看下面的例題 題目給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 1。輸入樣例 5 3 4 2 7 5 輸出樣例 1 3 1 2 2 題目意思很容易理解 那麼我們先來看暴力做法,每次取乙個數,與前面...