有時候我們有這樣的需求:得到乙個[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 和最大值的和都...