zoukankan      html  css  js  c++  java
  • 矩阵树定理刷题总结

    写在前面:

    仍然没有知识点和板子题

    轮状病毒

    看起来好像是道板子题,但是没有模数便很难受

    如果直接打高精需要高精加减乘除,而且还要维护正负

    这个时候当然是果断打表啦

    不难发现奇数项全部是平方数,偶数项加4也是

    把它们开方后恰好就是一个递推序列:其中

    $$f[1]=1,f[2]=3,f[i]=f[i-1]+f[i-2]$$

    高精的工作便成了正数的加和乘

    黑暗前的幻想乡

    每个公司需要恰好一个工作,也就是说恰好0个公司没有工作

    考虑容斥:

    $2^n$枚举是否选择,用矩阵树求出方案数奇加偶减即可

    最小生成树计数

    首先明确两个最小生成树的性质:

    1>在某张图的所以最小生成树中同一个边权的边数相同

    2>它们构成的联通块也是相同的

    证明是不可能的,这辈子不可能的

    所以可以对于每个边权跑一遍矩阵树就行啦(其实搜索好打多了)

    重建

    前置知识:变元矩阵树定理

    题目中要求:

    $$ans=sumlimits_{S is a tree}prod_{iin{S}}E[i]prod_{i otin{S}}(1-E[i])$$

    前面的乘积可以用变元矩阵树定理求出,然而后面的并不容易直接求得

    考虑转化式子:

    $$val=prod_{i=1}^{m}E[i]$$

    那么便有:

    $$ans=val*sumlimits_{S is a tree}prod_{iin{S}}frac{E[i]}{1-E[i]}$$

    于是便可以同时维护啦

    然而$E[i]$可能为$1$,所以需要把一定选的边用并查集维护并缩成一个点再跑矩阵树就可以了

  • 相关阅读:
    FreeModbus TCP
    C#之用户自定义控件
    使用C库制作DLL
    C# Unable to load DLL 'WzCanDll.dll':找不到指定的模块
    C#之改变窗体icon图标、新建类文件、调用dll库
    sim800c GPRS模块的透传模式
    STM32上使用JSON
    STM32之串口IAP更新升级
    Fortran语言的REWIND和BACKSPACE 函数
    Code blocks 编译Fortran(转载)
  • 原文地址:https://www.cnblogs.com/AthosD/p/12153067.html
Copyright © 2011-2022 走看看