hdu4126 Genghis Khan the Conqueror(最小生成树+树形dp)

探讨了在无向图中,面对多种破坏可能时,如何利用树形DP和最小生成树理论计算连通所有点的期望代价。通过Kruskal算法构建最小生成树,并对树形DP进行深入解析,实现对复杂破坏情况下的最优路径计算。

题目

n(n<=3e3)个点,m(0<=m<=C(n,2))条边的无向图,

第i条边连接xi和yi,代价为ci(0<=ci<=1e7),

保证图连通且无重边,保证所有边代价之和<=1e9

以下,有q(q<=1e4)种互斥的破坏的可能,

第j种会把连接xj和yj之间的边,调升至cj(保证cj比原来大,且cj<=1e7)

最终会等概率地选择其中一种进行破坏,

问将n个点连通在一起的期望代价和

思路来源

https://www.cnblogs.com/samhx/p/HDU-4126.html

题解

翻了好几篇题解都没懂,最后翻到了这位博主的博客,

这位博主也翻了好几篇才懂,最终讲的也很清楚明白,树形dp还是博大精深啊orz

 

对q种情况,每一种情况求其对应的最小生成树代价,最终除以q即为答案

①如果不在最小生成树上,生成树代价不变,

②如果这条边在最小生成树上,相当于将原树拆成两棵树,

最小生成树代价为两棵生成树的代价,加上这两棵树外一条最小边(注意破坏边边权已被放大)的代价

 

第一部分是最小生成树,先套kruskal,然后要把最小生成树实际建出来,

对这棵最小生成树搞树形dp,dp[u][v]代表u和v通过不在生成树上的边达到连通的最小代价

 

具体实现时,通过枚举根rt,根rt到叶节点之间相通只能通过直连更新,

此时,认为最小生成树是一棵rt为根的树,叶节点是一棵树,通过叶节点到rt的距离更新

回溯非叶节点u->v时,认为u已经和根rt相通,v已经得到了最小的树外边代价,dis[u][v]与tmp取小

再向上回溯时,把u和

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小衣同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值