zoukankan      html  css  js  c++  java
  • CF1097G Vladislav and a Great Legend 组合、树形背包

    传送门


    看到(k)次幂求和先用斯特林数拆幂:(x^k = sumlimits_{i=1}^k inom{x}{i}left{ egin{array}{cccc} k \ i end{array} ight}i!)

    那么原式等于(sumlimits_{X} sumlimits_{i=1}^k inom{f(X)}{i}left{ egin{array}{cccc} k \ i end{array} ight}i! = sumlimits_{i=1}^k left{ egin{array}{cccc} k \ i end{array} ight}i! sumlimits_{X} inom{f(X)}{i})

    那么我们需要求(sumlimits_{X} inom{f(X)}{i}),它的组合意义就是从点集(X)的斯坦纳树中无序选出(i)条边的方案总数。不难发现这个就可以背包了。

    (f_{i,j})表示在斯坦纳树经过点(i)的所有点集中选择(j)条边的方案数。当一个儿子转移上来的时候分三种情况转移:

    1、不选择这一个子树;

    2、只选择这一棵子树,此时需要考虑这棵子树到当前点的边;

    3、同时选择当前点的其他子树(或者当前点)和这一棵子树,此时需要考虑这棵子树到当前点的边。

    值得注意的是只有在计算3的时候才能够贡献答案,因为1在之前已经贡献过答案了,而2只是某一棵子树向上延伸的结果,实际上并没有找到一个合法的斯坦纳树,所以不能贡献答案。

    然后又把模数写成了998244353

    代码

  • 相关阅读:
    接口分类
    HTTPS和HTTP的主要区别
    协议类
    小程序
    Polyfill
    去重数组
    odoo 接口跨域请求报错
    docker-compose 自定义容器名称
    linux ssh 防暴力破解fail2ban
    odoo 知识点
  • 原文地址:https://www.cnblogs.com/Itst/p/10836348.html
Copyright © 2011-2022 走看看