【BZOJ1455】罗马游戏 可并堆

这篇博客详细介绍了BZOJ1455题目——罗马游戏中的可并堆问题。作者阐述了可并堆的概念,指出它实际上是一个函数而非特定的数据结构,通常基于二叉堆实现。在合并两个堆的过程中,通过比较大小来确定父节点,并递归地处理子节点,直至其中一个堆为空。此外,提供了可并随机堆的代码实现,该实现允许将元素随机挂到某个子节点上,以确保二叉堆的性质。
摘要由CSDN通过智能技术生成

链接:

#include <stdio.h>
int main()
{
    puts("转载请注明出处[vmurder]谢谢");
    puts("网址:blog.csdn.net/vmurder/article/details/44513511");
}

题解:

可并堆:
其实它只是个函数,而不是数据结构,它的数据结构只是“堆”?
可并的随机堆才算一个?

两个堆合并时,对比大小决定谁是父亲,然后劣的和优的 的子再递归进行比较,直到一头为空(无法也不用再比较时),能满足正常插入就可以保证二叉的性质时停止。

代码:

可并随机堆(随机挂到某子上)

#include <cstdio>
#include <cstring>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值