zoukankan      html  css  js  c++  java
  • [笔记] n个点的基环树数量

    某裴姓蒟蒻上午提了一个小问题(rt)。。然后他升华了。。升华之前感受到了神犇的力量。。。


    方法一:

    g[n][k]表示n个点,k条边的无向图(不一定连通)

    f[n][k]表示表示n个点,k条边的无向连通图

    咕咕了。。。自己讲不清。。。O(n^4)


    方法二: 

    我们可以枚举环的大小,设为$i$,则可以从$ n$个中随意选$i$个点即$C_n^i$,造出本质不同的环的数量为$(i-1)!$,但是会有翻转同构,所以要$/2$;

    当n个点有k个连通块,把他们连成一棵树的方案数是:$ Pi sz_i space* n^{k-2}$

    证明:把连通块看成点,$sz_i$表示第$i$个连通块的点数

    枚举$Prufer$序列,设$p_i$为$Prufer$序列中的第$i$项,$q_i$代表$i$在$Prufer$序列中的出现次数,

    则有 $ Sigma_{Prufer}space Pi sz_i^{q_i+1} space q_i+1$相当于是$i$的度数,而每个点都有可能是连边的点,所以是$sz_i^{q_i+1}$ 

    $Pi sz_i space Sigma_{Prufer}space Pi sz_i^{q_i}$ 

    $Pi sz_i space Sigma_{Prufer} space Pi sz_{p_i}$

    根据$Prufer$序列的性质,我们知道$Prufer$序列长$ k-2$并且每个位置都可以填$[1,k]$

    所以根据乘法原理(或是说乘法分配律)可知:

    $Sigma_{Prufer} space Pi sz_{p_i}=Pi_{p=1}^{k-2}Sigma_{i=1}^k sz_i$

    所以有$Pi sz_i space Pi_{p=1}^{k-2}Sigma_{i=1}^k sz_i$,而$Sigma_{i=1}^k sz_i=n$

    即$Pi sz_i space n^{k-2}$

    证毕

    此时每个点的$sz$都是$1$,除了那个环的$sz$是$i$,共有$n-i+1$个点(连通块)

    所以公式为$C_n^i*(i-1)!*i*n^{n-i+1-2}=C_n^i*i!*n^{n-i-1}$


    咕了一天qwq2019.05.20

  • 相关阅读:
    分享15个Linux 实用技巧,提高工作效率
    隐藏搜索框:CSS 动画正反向序列
    js检测开发者工具是否打开,防止别人恶意调试我们的代码
    Js实现元素右滑回弹效果(基于Uniapp)
    css ::marker伪元素,修改li的项目符号颜色,字号字体
    Jump Game II
    Google 面经 09/26
    Word Search
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10888758.html
Copyright © 2011-2022 走看看