**原
處理動態中位數等問題,靈活運用了堆的性質,本質是維護兩個堆。
大根堆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 設定或獲取當前元素物件內的...