單調棧(陣列模擬)

2021-10-02 09:02:22 字數 583 閱讀 9705

1≤n≤1e5

1≤數列中元素≤1e9

輸入樣例:

53 4 2 7 5

輸出樣例:

-1 3 -1 2 2

思路:對於這種題顯然是可以暴力解決的,但要是想要優化一下就得思考一下。本題的意思是找到離某個數a[z]最近的左邊的小於它的數;那麼這裡面就有個關係了:可以用乙個棧來存這些左邊的數,若x < y < z,且a[x] >= a[y] , a[x] <= a[z] , a[y] <= a[z] ;那麼a[x]便永遠不會用上,那麼這個棧就是嚴格遞增的數列了,這樣已處理顯然時間複雜度就降了很多。

**實現:

#include

using

namespace std;

const

int n =

1e5+5;

int n;

int stk[n]

, tt;

intmain()

return0;

}

模擬單調棧

有n個數,每個數有權值。數學老師定義了區間價值為區間和乘上區間內的最小值。現在要你找出有最大區間價值的區間是什麼,並輸出區間價值 輸入 每個輸入檔案只包含單組資料。第一行乙個整數n。1 n 100000 第二行n個整數a 1,a 2,a n。0 a i 1000000 輸出 第一行輸出乙個整數,表示...

陣列模擬棧

在資料結構中棧是一種線性結構也是有序列表,棧的特點就是 filo 先進後出 棧是限制線性表中元素的增加和刪除只能在一端進行的特殊線性表,變化的一端為棧頂 top 固定的一端棧底 bottom 在學習棧時我們可以把它想象成乙個桶,依次放入東西,在取東西時只能從上面依次取出,不可能直接取出下面的東西。棧...

陣列模擬棧

棧的結構相當於生活中常見的一端封閉,一端開頭的容器,如下圖 底部封死後,只能通過上邊的埠來訪問東西,即先放入的後取出。棧就是這樣一種結構。棧 是一種線性資料結構,並且棧中的元素只能先入後出,並且最早進入的元素存放的位置叫棧底 封閉端 最後進入的元素存放的位置叫棧頂 開口端 可以通過陣列或者鍊錶來實現...