Kyopro Library
読み取り中…
検索中…
一致する文字列を見つけられません
erasable_pq.hpp
[詳解]
1
#
include
"../../kyopro_library/template.hpp"
2
3
/// @brief 削除可能な優先度付きキュー
4
/// @tparam MAX trueのとき、最大値を返す
5
/// @tparam NONE 空のときに返す値
6
template
<
typename
T,
bool
MAX=
true
, T NONE=-INF>
7
struct
ErasablePQ
{
8
priority_queue
<
T
>
pq
,
pq2
;
9
int
siz
=0;
10
11
ErasablePQ
() {
siz
=0; }
12
13
/// @brief x を追加する
14
void
push
(
int
x) {
15
if
(!MAX) x=-x;
16
pq.push(x);
17
siz
++;
18
}
19
20
/// @brief x を削除する
21
void
erase
(
int
x) {
22
if
(!MAX) x=-x;
23
pq2.push(x);
24
siz
--;
25
}
26
27
/// @brief 最大値を返す
28
T
top
() {
29
while
(!pq.empty()) {
30
if
(pq2.empty())
return
(MAX ? pq.top() : -pq.top());
31
if
(pq.top()==pq2.top()) {
32
pq.pop();
33
pq2.pop();
34
}
else
{
35
return
(MAX ? pq.top() : -pq.top());
36
}
37
}
38
39
return
NONE;
40
}
41
};
ErasablePQ
削除可能な優先度付きキュー
Definition
erasable_pq.hpp:7
ErasablePQ::pq2
priority_queue< T > pq2
Definition
erasable_pq.hpp:8
ErasablePQ::pq
priority_queue< T > pq
Definition
erasable_pq.hpp:8
ErasablePQ::ErasablePQ
ErasablePQ()
Definition
erasable_pq.hpp:11
ErasablePQ::top
T top()
最大値を返す
Definition
erasable_pq.hpp:28
ErasablePQ::push
void push(int x)
x を追加する
Definition
erasable_pq.hpp:14
ErasablePQ::siz
int siz
Definition
erasable_pq.hpp:9
ErasablePQ::erase
void erase(int x)
x を削除する
Definition
erasable_pq.hpp:21
data_structure
erasable_pq.hpp
構築:
1.13.2