zoukankan      html  css  js  c++  java
  • 二项式反演笔记(草稿)

    一般形式

    \[f(n)=\sum_{k=0}^n \begin{pmatrix}n\\k \end{pmatrix}g(k)\\ \Rightarrow g(n)=\sum_{k=0}^n(-1)^{n-k}\begin{pmatrix}n\\k \end{pmatrix}f(k) \]

    \(~~~~\) 可以认为是至多与恰好的特殊形式。

    至多与恰好

    \[f(n)=\sum_{i=m}^n \begin{pmatrix} n\\i \end{pmatrix} g(i)\\ \Rightarrow g(n)=\sum_{i=m}^n (-1)^{n-i} \begin{pmatrix} n\\i \end{pmatrix} f(i) \]

    应用:\(f\) 记为至多的方案数,\(g\) 记为恰好的方案数。

    \(E.g:\)\(n\) 个球排成一行,有 \(k\) 种颜色,要求给每个球染色使得每种颜色至少出现一次且相邻两个球颜色不同。

    \(~~~~\) 记:\(f_i\) 为至多使用 \(i\) 种颜色对 \(n\) 个球染色的方案数,且相邻的球颜色不同的方案数,即 \(f_i=i\times(i-1)^{n-1}\). \(g_i\) 为恰好使用 \(i\) 种颜色对 \(n\) 个球染色的方案数

    \(~~~~\) 可以写出以下柿子:

    \[f_k=\sum_{i=0}^k \begin{pmatrix} k\\i \end{pmatrix} g_i \]

    \(~~~~\) 反演得到:

    \[g_k=\sum_{i=0}^k (-1)^{k-i} \begin{pmatrix} k\\i \end{pmatrix} f_i \]

    \(~~~~\) 显然可以 \(\mathcal{O(k)}\) 求出所有 \(g\) ,最终答案就是 \(\sum_{i=1}^k g_i\)

    至少与恰好

    \[f(n)=\sum_{i=n}^m \begin{pmatrix} i\\n \end{pmatrix} g(i)\\ \Rightarrow g(n)=\sum_{i=n}^m (-1)^{i-n}\begin{pmatrix} i\\n \end{pmatrix} f(i) \]

    应用:\(f\) 记为至少的方案数,\(g\) 记为恰好的方案数。

    \(E.g:\)\(n\) 个元素的集合,它共有 \(2^n\) 个子集,问有多少种选择若干个子集的方法使得这些选择的子集的交集的大小为 \(k\)

    \(~~~~\) 记:\(f\) 为交集大小至少为 \(k\) 的方案数,则所有选择的集合必须包含所钦定的 \(k\) 个元素,这样的集合应有 \(2^{n-k}\) 个,同时再从这些集合里面选择非空子集,共 \(2^{2^{n-k}}-1\) 种方案数。然后再考虑钦定的方案数,\(f_k=(2^{2^{n-k}}-1)\times C_n^k\)

    其实选择至多和至少主要是看哪个的 \(f\) 函数更好求得。

  • 相关阅读:
    数据库使用--MySQL: InnoDB 还是 MyISAM?
    数据库使用3--索引系列
    数据库使用1--注意事项
    数据库使用2--索引系列
    学习FFmpeg API
    几种常见 容器 比较和分析 hashmap, map, vector, list ...hash table
    tiny中文乱码问题,不过仅适用于windows,所以xml不可以出现中文
    【NumPy】numpy数组类型
    【1.1】Scrapy抓取4步走、新建项目
    django+markdown
  • 原文地址:https://www.cnblogs.com/Azazel/p/15641130.html
Copyright © 2011-2022 走看看