zoukankan      html  css  js  c++  java
  • DAG 计数

    以下方法都是按照这个套路:
    考虑一个不一定连通的 DAG ,你枚举一些零度点(拓扑序第一层)集合 (S),这些点之间不能连边,这些点跟剩下点(点集为 (T),(|S| cup |T| = |V|))的连边只能由 (S ightarrow T)(T) 是一个 DAG。
    但这样算会重复,因为没有考虑到其他 (T) 中的零度点,会算重,然而显然是二项式的容斥形式,带上容斥系数 ((-1)^{|S|+1}) 即可。

    有标号 DAG 图计数(不要求连通)

    (nle 200000)

    Sol

    根据上述即 (f(n)=sum_{i=1}^n (-1)^{i+1} {nchoose i}f(n-i)2^{i(n-i)}),多项式求逆可以做到 (O(nlogn))

    有标号 DAG 图计数(要求弱连通)

    (nle 200000)

    Sol

    根据集合与划分的关系设不一定连通的 DAG 的 EGF 为 F,设连通的 DAG 的 EGF 为 G,(F=e^G ightarrow G=ln(F))

    DAG 子图计数

    给定 (m) 条边,每条边各有 (frac{1}{3}) 的概率 (u ightarrow v)(v ightarrow u) 或断开。
    求这个图是 DAG 的概率,无重边无自环。

    (nle 20,mle n^2)

    Sol

    状压 DP,(dp_S=sum_{Tsubset S,T e varnothing} (-1)^{|T|+1} dp_{S-T} P_1(S) P_2(S ightarrow T)),两个概率的式子都很容易写出来。
    可以用子集卷积优化到 (O(n^22^n))

    DAG 子图计数

    你有一个 (n) 个节点的有向图,我们称一个合法的方案是将其中一些边的方向翻转之后使得剩下的图无环。
    对于所有合法的方案,将方案中翻转方向的边的数量求和。

    (nle 20)

    Sol

    注意一个方案倒转后依然合法,那么这两个图的贡献和为 (m),我们可以直接计数 DAG 的数目。
    状压 DP, 枚举第一层点转移,子集卷积优化 (O(n^22^n))

  • 相关阅读:
    Spring事务管理学习笔记
    写给初学前端工程师的一封信
    angularjs 自定义指令弹窗
    ng-if和ng-show的区别
    前端遇到的一些坑
    浏览器样式兼容总结
    百分比控制表格列宽,不起效
    ng-model 将时间戳转换为标准时间
    使用git和sourcetree提交代码的一些问题
    本地运行angularjs应用,提示出现跨域问题
  • 原文地址:https://www.cnblogs.com/bestwyj/p/11583312.html
Copyright © 2011-2022 走看看