模板 可輸出數值下標的最大堆

2021-10-07 12:48:54 字數 839 閱讀 3096

prority_queue不可以輸出下標,只能手寫

題目:n個操作,三個格式insert x /pop / query x,插入x,刪除堆裡最大值,輸出x的下標(若不存在輸出-1)

// 優先佇列 - 最大堆

// data 存放資料 範圍 -1e9~1e9

// size 表示堆裡面資料的個數

// 記錄下標版本 可以直接輸出資料的下標

// 前提 沒有數值重複

namespace maxheap

data[i]

= x;

mp[data[i]

]= i;

}//刪除堆頂

void

pop(

)int p, c;

//父親節點 兒子節點

for(p =

1; p *

2<= size; p = c)

if(x >= data[c]

)break

;else

} data[p]

= x;

mp[data[p]

]= p;

}//輸出堆內所有的值

void

out(

) cout << endl;

}//最大堆初始化

void

init()

else

if(s ==

"pop"

)else

//out();}}

}using

namespace maxheap;

數值輸出操作

cout setiosflags 是包含在命名空間iomanip 中的c 操作符,該操作符的作用是執行由有引數指定 區域內的動作 iso fixed 是操作符setiosflags 的引數之一,該引數指定的動作是以帶小數點的形式表示浮點 數,並且在允許的精度範圍內盡可能的把數字移向小數點右側 iso...

模板 可並堆

想學非旋轉的treap 然後看到裡面提到斜堆 順便學了學可並堆 可並堆 1.左偏樹 其實他介紹了4種可並堆 2.斜堆 好像說是類似平衡樹里的 splay merge a,b b.val 大根堆 merge a.r,b swap a.l,a.r 細節什麼的還有一點 大體思想是合併a和b時 先合併a的右...

模板 Linux下輸出檔案的對比

diff 引數 檔案1或目錄1 檔案2或目錄2 指定要顯示多少行的文字。此引數必須與 c或 u引數一併使用。a或 text diff預設只會逐行比較文字檔案。b或 ignore space change 不檢查空格字元的不同。b或 ignore blank lines 不檢查空白行。c 顯示全部內文...