zoukankan      html  css  js  c++  java
  • 1016: [JSOI2008]最小生成树计数

    orz,感觉对最小生成树的理解又加进了一步。ps:不得不说对于经典算法的探究是永无止境的,只能通过交流和增长见识来学习和体会,自己研究确实困难。

    让我们来深入分析一下kruskal算法。算法过程不多说,直接证明:假设算法考虑到第k条边,这时发现边的两端已经在同一个连通块里面了(称为“冲突”),为了使这条边加入这个连通块之后仍然保持树的性质,我们定要从成的环上删去一条边,而之后连通性并未发生改变,但由于删去的边权不大于当前边权,所以答案不会更优,证毕。

    对于这道题,我们要看到通过kruskal算法求最小生成树的过程的分析得出的一个性质:如果相同权的边C有K条,那么在考虑下一种边权时,不同的加入法被加入连通状态的边C数量相同,且点的连通状态相同。即:一个图的最小生成树相同边权的边的数量一定相等,且加入这些边之后形成的连通状态也相同。证明:将相同的边权分成一个加边阶段,对于当前阶段的边C设其有K条。假设在考虑到K中的第T条时发生了冲突,有两种情况:若形成的环中有之前加入过的C边,那么可以将其替换从而连通状态不会改变;若没有,当前K值边不能加入且之后的K值边也无法加入。上述两种情况都不会增加加入边的数量和改变连通状态,得证。

    所以就愉快的kruskal暴力并查集维护连通性+搜索,每个阶段可能的加边方案数累乘起来就行了。注意特判无解情况(因为上述做法会在无解时输出1)。代码网上多的是23333。matrix-tree定理貌似用不了啊??求神犇(特指ydc)讲解2333.

     

  • 相关阅读:
    Windows Live Writer网址缩短插件
    花点时间了解消息,句柄和窗口
    大学生的心声
    CSS,样式选择器
    如何转换非发布网站为发布网站(how to convert nonpublishing sites to publishing sites)
    SharePoint 2010视频演示和培训
    [转]ASP.NET会话(Session)保存模式
    SharePoint查阅项(Lookup)字段多值分隔符
    [转]再看关键链进度计划
    如何通过组策略管理器修改Windows系统设置选项
  • 原文地址:https://www.cnblogs.com/hzf-sbit/p/4009340.html
Copyright © 2011-2022 走看看