題目背景
模板題,無背景。
2019.12.12 更新資料,放寬時限,現在不再卡常了。
題目描述
給出項數為 nnn 的整數數列 a1…na_a1…n。
定義函式 f(i)f(i)f(i) 代表數列中第 iii 個元素之後第乙個大於 aia_iai 的元素的下標,即 f(i)=miniaif(i)=\min_ f(i)=miniai。若不存在,則 f(i)=0f(i)=0f(i)=0。
試求出 f(1…n)f(1\dots n)f(1…n)。
輸入格式
第一行乙個正整數 nnn。
第二行 nnn 個正整數 a1…na_a1…n。
輸出格式
一行 nnn 個整數 f(1…n)f(1\dots n)f(1…n) 的值。
輸入輸出樣例
輸入 #1
51 4 2 3 5
輸出 #1
2 5 4 5 0
說明/提示
【資料規模與約定】
對於 30%30%30% 的資料,n≤100n\leq 100n≤100;
對於 60%60%60% 的資料,n≤5×103n\leq 5 \times 10^3n≤5×103 ;
對於 100%100%100% 的資料,1≤n≤3×1061 \le n\leq 3\times 10^61≤n≤3×106,1≤ai≤1091\leq a_i\leq 10^91≤ai≤109。
#include
#include
#include
using
namespace std;
const
int maxn =
3e6+10;
int a[maxn]
, st[maxn]
, ans[maxn]
;int top;
int n;
intmain()
for(
int i =
1; i <= n; i++
)printf
("%d "
, ans[i]);
return0;
}
P5788 模板 單調棧
5788 題目背景 模板題,無背景。2019.12.12 更新資料,放寬時限,現在不再卡常了。題目描述 給出項數為 nn 的整數數列 a a 1 n 定義函式 f i f i 代表數列中第 ii 個元素之後第乙個大於 ai 的元素的下標,即 f i min f i miniai 若不存在,則 f i...
單調棧 模板 單調棧模板
biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...
單調棧模板
顧名思義就是棧裡的元素是單調的。但是這個怎麼使用呢?怎麼就能是單調的呢?看下面的例題 題目給定乙個長度為n的整數數列,輸出每個數左邊第乙個比它小的數,如果不存在則輸出 1。輸入樣例 5 3 4 2 7 5 輸出樣例 1 3 1 2 2 題目意思很容易理解 那麼我們先來看暴力做法,每次取乙個數,與前面...