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))

  • 相关阅读:
    Arial Monospaced
    也玩有道难题的双立方数问题:Python 版解法
    用 VB.NET 实现的非确定性计算例子
    Gestalt 在浏览器里用 python/ruby 写客户端脚本
    非确定性计算引擎转化为C#版本并重构
    再谈C#的装箱和拆箱
    谈谈.Net 4.0 中的委托delegate
    在C#中使用SqlDbType.Xml类型参数
    java cmd编译class文件
    Mysql、Oracle插表关于主键的处理
  • 原文地址:https://www.cnblogs.com/bestwyj/p/11583312.html
Copyright © 2011-2022 走看看