博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法] 可并堆
阅读量:4958 次
发布时间:2019-06-12

本文共 603 字,大约阅读时间需要 2 分钟。

左偏树(小根堆):

int merge(int x, int y) {    if(!x) return y;    if(!y) return x;    if(v[x]>v[y]) swap(x,y);    rs[x]=merge(rs[x],y);    if(dis[rs[x]>dis[ls[x]]]) swap(ls[x],rs[x]);    if(!rs[x]) dis[x]=0;    else dis[x]=dis[rs[x]]+1;    return x;}int pop(int x) {    int l=ls[x],r=rs[x];    ls[x]=rs[x]=dis[x]=0;    return merge(l,r);}//取堆顶直接访问v[x]即可

斜堆:

//需要先对结点编号?没太懂int merge(int x, int y) {    if(!x || !y) return x+y;    if(v[x]>v[y]) swap(x,y);    rs[x]=merge(rs[x],y);    swap(ls[x],rs[x]);    return x;}int pop(int x) {    return merge(ls[x],rs[x]);}

转载于:https://www.cnblogs.com/HLXZZ/p/7639056.html

你可能感兴趣的文章
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>