2017 8 12訓練日記(單調棧)

2021-08-06 03:24:05 字數 820 閱讀 3501

今天**原因著實沒做多少題  |_>)

今天做的題,除了幾個二分的變形,還有就是和單調棧有關的內容

單調棧其實就是單調遞增或者單調遞減的棧,也沒啥特殊的;

單調棧只能在棧頂進行操作

而維護單調棧就是必須保持原棧的單調性不變;

從陣列的角度闡述單調棧的性質:

給定乙個包含若干個整數的陣列,我們從第 1 個元素開始依次加入單調棧裡,並且加入後更新單調棧。

那麼單調棧有這樣的性質:對於單調遞增的棧,如果此時棧頂元素為 b,加入新元素 a 後進行更新時,

如果 a 大於 b,說明 a 在陣列裡不能再往左擴充套件了(由於單調棧的單調遞增性質,b前面的元素均小於a),

也就是說,如果從 a 在陣列中的位置開始往左邊遍歷,則 a 一定是第乙個比 b 大的元素;

如果 a 小於 b,說明在陣列裡,a 前面至少有乙個元素不能擴充套件到 a 的位置(至少有b元素,因為b的值要大於a,如果此時再加入新的

a,那麼單調棧便不再單調,所以元素a此時不能壓入棧頂,因為這並不是元素a"應該"在的位置,只有當元素a找到自己的位置時

元素a方能壓入棧中,而這樣做的前提是不改變單調棧的單調性),也就是對於這些元素來說,a 是其在陣列右側第乙個比它小的元素。

單調棧的維護是 o(n) 級的時間複雜度,因為所有元素只會進入棧一次,並且出棧後再也不會進棧了。

單調棧的性質:

1.單調棧裡的元素具有單調性

2.元素加入棧前,會在棧頂端把破壞棧單調性的元素都刪除

3.使用單調棧可以找到元素向左遍歷第乙個比他小的元素,也可以找到元素向左遍歷第乙個比他大的元素。

//別的也沒啥了,題沒寫完,明天要加班了qaq

訓練日記 20161024

初賽好像不會掛了,好開心!版權原因,不上傳題目。題意 求1 n n 1000 的排列中逆序對恰好為 k 個的排列數目。多測。題解 f i j 表示前 i 個數,逆序對個數恰好為 j的排列個數,易得轉移方程f i j i 1k 0f i 1 j k 用字首和優化可使複雜度降為o n2 題意 對於乙個長...

訓練日記 20170324

長久不更新部落格了。期間經歷了恰好被ag線踩的wc,經歷了漫長痛苦的小高考準備。現在終於可以重整旗鼓,向省選進發!幾個月來,唯一不變的是我仍然是個超級蒟蒻 版權原因,不上傳題目。題意 最小樹形圖 去年就接觸 聽說 過的演算法,一直沒有真正寫過。因為各種奇怪的細節錯誤,調了好幾個小時 比如找環時沒有判...

訓練日記 20170328

今天的題目似乎很水 好多人都提前ak離場了,於是提前一小時收題。但是我還是各種不會。思維江化?話說,聽到一句很有趣的話 山不在高,有林則徐 水不在深,有江 題意 給定一棵有n n 105 個節點的有根樹,編號互不重複。詢問有多少棵子樹內節點編號構成乙個連續區間。題解 水題,對於每個節點 i 記錄以該...