手動實現雙指標式的單調佇列

2021-07-26 05:04:25 字數 400 閱讀 6928

有時候我們有這樣的需求:得到乙個[l, r]區間的最值,並且這個區間的兩個邊界指標是不斷朝乙個單方向移動的,這時手動的o(n)優先佇列(就是單調佇列)就能滿足需求了

自己寫在這裡給自己參考,其實這東西已經爛大街了吧qaq

#include using namespace std;

#define mp make_pair

typedef pairp;

const int maxn = 1000 + 5;

struct pq

void pop(int pos)

void insert(int val, int pos)

bool empty()

int top()

};

用雙端佇列實現單調佇列

單調佇列是指 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。以單調不減隊列為例 佇列內的元素 e1,e2,e3.en 存在 e1 e2 e3 en 的關係,所以隊首元素e1一定是最小的元素。與優先佇列不同的是,當有乙個新的元素e入隊時,先要將隊尾的所有...

Blah數集(雙指標單調佇列)

描述 大數學家高斯小時候偶然間發現一種有趣的自然數集合blah,對於以a為基的集合ba定義如下 1 a是集合ba的基,且a是ba的第乙個元素 2 如果x在集合ba中,則2x 1和3x 1也都在集合ba中 3 沒有其他元素在集合ba中了。現在小高斯想知道如果將集合ba中元素按照公升序排列,第n個元素會...

雙指標 單調性的思考

單調性的好處就是使得不需要一一掃瞄判斷乙個乙個排除,而是有可能集體判斷排除一大片。二分法就是乙個應用 當a mid 其實經典的排序陣列2sum 問題和楊氏矩陣查詢也是利用單調性進行集體判斷 排除的乙個應用 1 l,r已經分別處在最大和最小的極限,當a l a r target,a r 和最大值的和都...