【每日一题】5月1日题目精讲 最小生成树

题号 NC20568
名称 [SCOI2012]滑雪与时间胶囊
来源 [SCOI2012]
戳我进入往期每日一题汇总贴~
往期每日一题题单

图片说明

如果你在题库做题时遇到了喜欢的题目,欢迎推荐给邓老师~ 点击查看详情
图片说明

第一问是个裸的搜索不多说。
因为题目说不考虑时间胶囊的消耗,而且可以连续食用,所以最后走出来的形状一定是树的样子。
但是它并不是简单的最小生成树,因为他的边实际上是有方向的,即只能从高层走到低层(同层之间的双向边可以做两个单向边处理)。下图给出一组不考虑方向直接跑最小生成树的反例:
图片说明
这种有向图的"最小生成树"实际上是最小树形图问题,最小树形图问题也有它自己的“朱-刘Edmonds算法”有兴趣的同学可以自己去研究(是的,这里不讲),他的复杂度是的,对于本题来说是不够的。
如果我们非常想用最小生成树去做他(因为确实问题很相似,想尽办法用自己会的算法去解决它是非常正常也是很正确的选择),那么我们需要详细分析最小生成树算法,以及本题的特殊性 。
首先考虑最小生成树的原理——贪心的选一条边加进来,直到加入了n-1条边(prim算法是每次找链接现有生成树和零散点的最短的一条边,而kruskal是找最短的把两个集合合并的边,但不管怎么说都是贪心找边)。
那么本题,如果我们想选一条边a到b,这条边需要满足什么条件呢?
显然,高度更高的点a要已经和根节点连通了(即之前选的边已经能从根走到a),那么我们有个很简单的方法来解决这个问题——在kruskal算法的排序中按照出点的高度从大到小排序(第一关键字),高度相同再按照长度排序,这样相当于我们在一层一层扩展,先把最高层的点加入最小树形图然后次高层然后第三高层……这样所有的边就是按照从高的低的方向走的了。(prim算法是不是也这样请大家自行考虑,多想想没坏处)

欢迎各位大佬来做题写题解,也欢迎大家踊跃在当日讨论贴中提问!

活动奖励:

在牛客博客中写出题解,并回复地址
审核通过可获得(依据题目难度和题解的内容而定)

本道题目5月8日中午12:00之前写的题解有获得牛币资格~

.牛币兑换中心

牛客博客开通方式

  1. 如何开通牛客博客:https://www.nowcoder.com/discuss/202952
  2. 如何使用博客搬家功能:进入博客--->设置--->底部博客搬家
  3. 如果你对牛客博客有任何意见或建议:牛客博客意见反馈专贴
全部评论
看到这个题其实满满的回忆……然后就疯狂想叨叨两句…… 这是我当年省选爆零的真题,也因为这个原因至今对这套题记忆尤深……那年省队线90,ac一个题就够了,然而那时候我太菜了悲惨爆零…… 多年过去,回忆起这个题,其实真的不难啊,说到底还是自己学习过程种没有特别认真的理解算法本身,光会套模板了甚至模板套得都不是很好,做题的时候没有透彻的观察和分析问题。(所以后来大学的时候我分析题的习惯发生了一些的变化,开始给别人讲算法之后角度就更加不同。) 时过境迁,我也从当年那个小蒟蒻变成现在这个大蒟蒻,但是还是特别感谢那段省选前停课的日子,虽说我的中学oi生涯看起来两手空空,但实际上收获满满,只是不足为外人道而已…… 我记得我中学oi退役之后没多久在英语阅读里看到过一句话“There is nothing sadder than a dream delays until it fades forever.”记了它很多年——其实也许我们心中有过很多梦,它无声地消散,一点浪花都没有掀起,但是起码,我们正在追逐的这个梦,该竭尽全力的。 今年各省的省选大约也快了吧,祝所有的追梦人都能圆满。
22 回复 分享
发布于 2020-04-30 16:33
五一 我来了
2 回复 分享
发布于 2020-04-30 11:21
https://blog.nowcoder.net/n/3fbb1489f2b04983884dbf35156da33a
1 回复 分享
发布于 2020-05-01 02:22
https://blog.nowcoder.net/n/c6646ccb437d405faf2840dbb3e3d06f
1 回复 分享
发布于 2020-05-03 09:51
https://blog.nowcoder.net/n/cbf1beaa727542efac27e9fe36d56978
1 回复 分享
发布于 2020-05-06 20:55
https://blog.nowcoder.net/n/3f21347228a64ba1a257b17d269d1c50
点赞 回复 分享
发布于 2020-04-30 11:39
https://blog.nowcoder.net/n/95c4b58d491c4968882264469673ae77
点赞 回复 分享
发布于 2020-04-30 15:01
https://blog.nowcoder.net/n/49dffb8b7bc548b5b1b5e7d4c37a6a26
点赞 回复 分享
发布于 2020-04-30 16:29
https://blog.nowcoder.net/n/fc3ff72051d545cba92b4890f1bb882c
点赞 回复 分享
发布于 2020-04-30 18:22
这道题的数据范围是多少呀。
点赞 回复 分享
发布于 2020-04-30 19:35
https://blog.nowcoder.net/n/d1d161fc132d49cb91afdf26c352216c
点赞 回复 分享
发布于 2020-04-30 22:52
https://blog.nowcoder.net/n/4ce29847d0d44cd6a8871ab4e9fdae3f 大家五一放假快乐~
点赞 回复 分享
发布于 2020-05-01 13:46
https://blog.nowcoder.net/n/216bd2a7b9ee4c3a8d42cf87e028222e
点赞 回复 分享
发布于 2020-05-01 16:25
https://blog.nowcoder.net/n/f18d5e7e34e3490dad06869ba2960ef3
点赞 回复 分享
发布于 2020-05-03 14:13
https://blog.nowcoder.net/n/66ffe8b810044939b4337877cf783667
点赞 回复 分享
发布于 2020-05-04 11:58
https://blog.nowcoder.net/n/3add4fe64d10427b8994f7f4859559a6
点赞 回复 分享
发布于 2020-05-04 18:05
https://blog.nowcoder.net/n/3ceef8635673448986cf437b6c875d44
点赞 回复 分享
发布于 2020-05-05 13:58
https://blog.nowcoder.net/n/e8922431f4e44261bb389b166258421c
点赞 回复 分享
发布于 2020-05-06 17:58
https://blog.nowcoder.net/n/a4ee626a30884a389f39e232324d4d96
点赞 回复 分享
发布于 2020-05-07 12:01
https://blog.nowcoder.net/n/e92a86fbfb20420897b061c27df17f4a写的挺详细了,良心制作了一个小时
点赞 回复 分享
发布于 2020-05-07 22:34

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务