基本数据类型时,直接用priority_queue<int> heap, priority_queue<int, vector<int>, greater<int>> heap即可。
  priority_queue中存储结构体时,需要自定义比较规则,比较绕,这里记录一下。
作为大根堆使用时
priority_queue<Seg> heap
  大根堆需要重载小于号,如果我们要实现一个双关键字排序,首先按照v从大到小排,v相等的情况下按照l从小到大排。因此写v < t.v就是让v按照大根堆从大到小排。但是!!实现从小到大排,就要反一下了,写成l > t.l。
struct Seg{
	int l, r, v;      
    bool operator< (const Seg& t) const{
    	if(v != t.v) return v < t.v;
        return l > t.l;
    }
};
作为小根堆使用时
priority_queue<Seg, vector<Seg>, greater<Seg>> heap
  小根堆需要重载大于号,如果我们要实现一个双关键字排序,首先按照v从小到大排,v相等的情况下按照l从大到小排。因此写v > t.v就是让v按照小根堆从小到大排。但是!!实现从大到小排,就要反一下了,写成l < t.l。
struct Seg{
	int l, r, v;      
    bool operator> (const Seg& t) const{
    	if(v != t.v) return v > t.v;
        return l < t.l;
    }
};