
單調棧
文章平均质量分 56
ZustinLau
I am currently studying Economics at the Chinese University of Hong Kong and I am interested in data structure and algorithms.
展开
-
SP1805 HISTOGRA - Largest Rectangle in a Histogram
題目地址:HISTOGRA - Largest Rectangle in a Histogram - 洛谷 經典找最大子矩陣問題。 對於一個陡峭不平的直方圖,每一個柱子都有不同的高度,透過觀察可以知道,如果兩根柱子組成的最大子矩陣他的高度必然不會超過較矮的矩陣高度。 有了這個思維,就可以知道一旦遇到比當前柱子要矮的柱子,就要立馬進行結算,但是這裡有一個問題,就是如果前面的柱子也是陡峭不平的,那麼就算結算,顯然答案也是不對的。 所以我們會想到利用單調棧,讓棧內元素保持升序,如果遇到比棧頂要小的元素就結原创 2022-03-18 08:25:35 · 243 阅读 · 0 评论 -
P4147 玉蟾宫
01矩陣找最大0子矩陣。 題目地址:玉蟾宫 - 洛谷 目录 Catenary Method 代碼流程 初始化 初始化最左 初始化最右 Core Part 完整代碼 Monotonic Stack 代碼 初始化 Core Part 完整代碼 經典題目,可以用懸線法(catenary method)或者單調棧,對於所有懸線法可以解的題目,單調棧都可以解,所以不會開一個懸線法系列。 Catenary Method 我們對於每一橫都用兩個指針掃一遍,得到每一橫裡的每一個位置的.原创 2022-03-18 05:32:39 · 316 阅读 · 0 评论 -
P1823 [COI2007] Patrik 音樂會的等待
題目連結:[COI2007] Patrik 音乐会的等待 - 洛谷 一開始看到題目有種逆序對的感覺,但題目說明中間若有比自己高的點就不算一對,這就不關逆序對的事情了。 1. 中間不能有比自己高的人 2. 相鄰兩個人可以算一對 從這個特性我們知道,假設前面有k個人,他們的升高都是降序排好的,如果有一個人進來了,他比這k個人都大,那麼如果第k + 2個人進來,我們可以保證這k + 2個人都不能和這k個人湊成一對,因為第k+1個人比前k個人要高,這就是題目給的條件1。 那這就挺適合用單調棧的了,我們保證原创 2022-03-17 19:41:10 · 155 阅读 · 0 评论 -
P1318 積水面積
這道題非常適合使用單調棧。 題目地址:积水面积 - 洛谷 首先,我們考慮遇到比自己高的柱子就進行結算,遇到比自己低的柱子就進行面積統計。 那麼唯一的問題就是,如果我們當前的柱子就是最高的呢?那不就無法結算了嗎? 問題哪裡來,就哪裡解決,我們把最後加入棧的柱子的index記下來,還有他的高度也記下來,因為他是我們最後結算的柱子,也就是說如果後面都沒有比他高的柱子,我們就會結算不了,所以我們就索性倒著再循環一遍,時間上也不會增加太多,確方便很多。 那我們應該怎麼判斷沒有必要倒著再循環一遍呢? 非常簡原创 2022-03-17 18:15:07 · 76 阅读 · 0 评论