关于问题的分析小结(1)-----bzoj1016最小生成树计数

对于acm解题来说 , 总是会思考, 为什么那些大牛什么方法都可以想到 , 而自己却经常卡提  。 以我之见,主要还是  对于问题的剖分上我们还有差距 ;

bzoj1016  -------  求最小生成树的个数

首先我想到了假设知道了一个最小生成树 , 我们添加一些其他的边一定会有一个环 , 而什么情况下允许加一条边再删去一条边使得人然是最小生成树 , 很容易想到 , 就是添加一条边权相等的边  , 那就有了一个想法 , 先求一颗最小生成树 , 然后再对于每一条边如果添加上去的环上有多少条权值相等的边,那就有多少个删除的方案  。但是再往下想就会出现问题 , 如果我是有多个环 , 那么如果分开考虑各自的种类数会发现相互影响的情况 , 这样一来就不可以直接用乘法原理, 也就不该再想下去了 。 会想当麻烦 。

于是我想到了 最小生成树是如何求出来的 。 边权排序 , 从小往大选, 如果没有环 就添加进去, 如果有环就剔除 , 但是当有环而且权值相同怎么办 ? 我可以不剔除这条边 , 而是剔除另外的一条边权相同的边 , 这样出来的结果也是一颗最小生成树 。 然后剔除之后对后面有影响吗 ? 我们替换或者不替换 , 最后联通的点还是联通的,只不过是换了一种联通的方式 , 所以后面的选择还是选点使剩下的联通 。 而剩下的需要联通的点不变 , 所以无后效性 。 但是这样又会有问题, 对于多个环还是会有相同的问题  。


最后 , 我们想到 , 边权相同的边一起考虑 , 如果和前面的树构成了环, 不考虑 , 因为选了它一定不会是最小生成树, 因为环内没有与它权值相同的边 。 而再边权相等的来拿通图内如果有环则连上边 , 构成一个图 。 这样 , 这些边就够成了多个联通分支 。 而我们前面说到 , 后面的和前面的选择不影响这个边权的选择 , 那也就是选边使得联通分支是多课树 。 dfs一下就可以 。 由于互补影响, 直接使用乘法原理 。 当然 , 上面使用生成树的计数 matrix-tree也可以。


综上 , 我们主要就是吧最小生成树的计算转化为了 熟悉的问题---生成树的计数 。 这也就是转化和化归的思想 。 


代码略 , 以后补上 。


---------------------------多思考 , 多做题 , 才可以获得快速而广阔的思维 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值