P5290 [十二省联考 2019] 春节十二响 题解
在想不到正解之前,我们可以看到出题人对于树是一条链的情况给了15分。
我们可以先想想一条链上的做法,毕竟树可以被剖成若干条链嘛。
然后就是看根节点的儿子数量。
如果只有一个儿子的话就输出 ,
如果有两个儿子的话就对其左右子树分别建立一个堆,每一次取出两个堆的堆顶进行比较,取之后加入答案。当一个堆取尽之后,把另一个对中的所有元素加入答案,最后加入 即可。
然后考虑将这个推到树上去。
如果我们从下往上合并每一个节点的所有子树的话,其实还是几条链的合并,因为我们最终会将一棵树合并为一条链,忽略了其他对答案不产生影响的信息。
从而最终还是进行了类似上面的链与链之间的合并,正确性也是毋庸置疑的。
时间复杂度 ,预期得分60分。
然后我们尝试优化复杂度。
对于两棵子树 和 ,我们假定 。那么,按照我们上面的做法,我们的复杂度是 的。
我们考虑将 合并到 内,这样就省去了再将 中的多余节点加入新堆中的操作了,时间复杂度就可以优化为 。
最后总的复杂度就是 。
代码如下:
__EOF__

本文作者:Kaiser Wilheim
本文链接:https://www.cnblogs.com/kaiserwilheim/p/16481948.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/kaiserwilheim/p/16481948.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现