對頂堆 知識點補充

2021-09-25 13:49:48 字數 1232 閱讀 7564

**原

處理動態中位數等問題,靈活運用了堆的性質,本質是維護兩個堆。

大根堆q1:維護集合中較小值的部分的最大值。

小根堆q2:維護集合中較大值的部分的最小值。

注意到兩個堆中的元素各自是單調的,兩個堆間也是單調的。也就是說,q1中的任何乙個元素都不大於q2中的任何乙個元素。

那麼假設高度為權值,兩個堆可以形象化的表示成:

插入操作:

priority_queue<

int> q1;

//大根堆

priority_queue<

int, vector<

int>

, greater<

int>

> q2;

//小根堆

inline

void

insert

(int x)

if(q2.

size()

> q1.

size()

+1)}

例題

[ poj 3784 ] running median

#include

#include

#define rep(i, a, b) for(register int i = (a); i < (b); i++)

#define _for(i, a, b) for(register int i = (a); i <= (b); i++)

using namespace std;

priority_queue<

int> q1;

//大根堆

priority_queue<

int, vector<

int>

, greater<

int>

> q2;

//小根堆

inline

void

insert

(int x)

if(q2.

size()

> q1.

size()

+1)}

intmain()

//輸出格式要注意 }}

puts(""

);}return0;

}

正則知識點補充

1.與正規表示式有關的字串物件的方法 string.replace pattern,string 替換在正規表示式查詢中找到的文字。string.search pattern 通過正規表示式查詢相應的字串,只是判斷有無匹配的字串。如果查詢成功,search 返回匹配串的位置,否則返回 1。strin...

property知識點補充

1 synthesize和 dynamic作用 1 property有兩個對應的詞,乙個是 synthesize,乙個是 dynamic。如果 synthesize和 dynamic都沒寫,那麼預設的就是 syntheszie var var 2 synthesize的語義是如果你沒有手動實現set...

DOM知識點補充

一 元素物件的屬性及自定義屬性的設定或獲取?物件.屬性 物件 屬性 物件.getattribute 屬性名 物件.setattribute 屬性名 屬性值 物件.removeattribute 屬性名 二 outerhtml 獲取當前元素物件及所有內容 innerhtml 設定或獲取當前元素物件內的...