1.自定义排序的方式:
对于一些特殊问题需要我们对如结构体的其中一个关键字进行优先队列的排序,或者自己规定一个排序的方式,那么就要用到自定义操作符。具体格式为;;;
struct panpan{
bool operator()(ww x,ww y){
return x.next<y.next;
}
};
priority_queue<ww,vector<ww>,panpan>que;
priority_queue<ww,vector<ww>,panpan>que;如果是普通的默认从大到小的优先队列定义,可以写成priority_queue<int>que;
这个东西就等于是priority_queue<int,vector<int>,???(判断条件)>que;
2.写题的细节方面:
1006-[JSOI2010]缓存交换_2021秋季算法入门班第五章习题:优先队列、并查集 (nowcoder.com)
1009-Operating System_2021秋季算法入门班第五章习题:优先队列、并查集 (nowcoder.com)
经常会出现这一类的问题,对于这种需要维护队列的题目,分两种情况去讨论,一种是队伍里有这个元素的时候,我们直接把当前元素放进去不用管原有元素,应为我们是按照后一个相同元素出现的位置来从大到小排序的所以后面进去的那个元素肯定会排到前面去,所以不用担心pop的操作会把重复的,被覆盖的那个元素pop出来以影响结果。然后如果里面没有这个元素那就正常pop一个然后push该元素