写优先队列问题的一些技巧

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该元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值