acm 單調佇列

2021-09-20 13:17:34 字數 464 閱讀 7109

單調佇列:

佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。

操作:(1)插入:若新元素從隊尾插入後會破壞單調性,則刪除隊尾元素,直到插入後不再破壞單調性為止,再將其插入單調佇列。

(2)獲取最優(最大、最小)值:訪問首尾元素。

原理:在處理時,去掉不和諧的狀態,使得每個狀態在佇列中只出現一次;同時維護乙個能瞬間得出最優解的佇列,減少重新訪問的時間;在取得自己所需的值後,為後續的求解做好準備。

應用:例:樸素演算法的優化

對於區間求極值,應用單調佇列,當我們將區間從(l,r)移動到(l+1,r+1)時,我們將ar+1插入單調佇列,若隊首元素不在(l,r)區間當中,刪除它。

因為單調佇列中包含刪除這個操作,所以就意味著,所得的可能佇列不包含所有的原始資料,用單調佇列來解決問題,一般都是需要得到當前的某個範圍內的最大值或最小值。這樣處理要比排序更輕鬆,降低了複雜度。

ACM 單調佇列

對於單調佇列的基本概念可以去看百科裡的相關介紹 這裡挑一些重點。作用 不斷地向快取陣列裡讀入元素,也不時地去掉最老的元素,不定期的詢問當前快取陣列裡的最小的元素。最直接的方法 普通佇列實現快取陣列。進隊出隊都是o 1 一次查詢需要遍歷當前佇列的所有元素,故o n rmq即range maximum ...

ACM單調佇列學習小結

單調佇列 解釋為 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。單調佇列的常用操作如下 1 插入 若新元素從隊尾插入後會破壞單調性,則刪除隊尾元素,直到插入後不再破壞單調性為止,再將其插入單調佇列。2 獲取最優 最大 最小 值 訪問首尾元素。一組數 1...

acm第十六次單調佇列

單調佇列一 單調佇列 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作 二 單調佇列的常用操作如下 插入 若新元素從隊尾插入後會破壞單調性,則刪除原來的隊尾元素,直到插入後不再破壞單調性為止,再將其插入單調佇列。一般用倆個指標指位置,front 0指隊首,...