可并堆(左偏树)
可以快速合并两个堆
定义为x到达的最远的右边的点的距离
则左偏树满足右左
合并只要往右树上合并就行了
删除:合并两个子树
int merge(int x,int y){ if(!x||!y)return x+y; if(v[x]<v[y]||(v[x]==x[y]&&x<y))swap(x,y); ch[x][1]=merge(ch[x][1],y); f[ch[x][1]]=x; if(dis[ch[x][0]]<dis[ch[x][1]])swap(ch[x][0],ch[x][1]); dis[x]=dis[ch[x][1]]+1; return x; }