优先队列注意事项

目录

1.最好永远不要用这种排序方式!!!!

正确示范(小顶堆):

等价于:


1.最好永远不要用这种排序方式!!!!

struct pii {
    int dis, i;
    pii() {}
    pii(int _dis, int _i) { dis = _dis, i = _i; }
} a[maxn];
struct cmp {
    bool operator()(int x, int y) {
        return a[x].dis > a[y].dis;  //小顶堆
    }
};
priority_queue<int, vector<int>, cmp> q;

P4779 【模板】单源最短路径(标准版)——这题这么写挂了。。。

即:用结构体下标对结构体进行排序。因为真的不知道会出现什么问题,试着用这个优化dijkstra,怎么调都不行——最后发现好像是因为它只有在加入新的元素的时候才会进行整体排序,并不能随时都保证s[i].dis小的在顶部。而且完全可以重载结构体的小于号进行排序啊!!!!!!!!!!!(不知道有无大佬指点一二,感激不尽)

正确示范(小顶堆):

struct pii {
    int dis, i;
    pii() {}
    pii(int _dis, int _i) { dis = _dis, i = _i; }
} a[maxn];
struct cmp {
    bool operator()(pii a, pii b) { return a.dis > b.dis; }
};
priority_queue<int, vector<int>, cmp> q;

等价于:

struct pii {
    int dis, i;
    pii() {}
    pii(int _dis, int _i) { dis = _dis, i = _i; }
    bool operator<(pii b) const { return dis > b.dis; }
} a[maxn];
priority_queue<int> q;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值