码迷,mamicode.com
首页 > 其他好文 > 详细

组合数形式的容斥原理

时间:2018-04-04 23:25:40      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:body   规律   想法   初学者   多项式   amp   AC   beta   ase   

大概地梳理一下组合数形式的几种常见的容斥,希望能帮助到初学者。

二项式定理

$$
f(n) = \sum_{i = 0} ^ n \binom{n}{i} g(i) \Leftrightarrow g(n) = \sum_{i = 0} ^ n (-1) ^ {n - i} \binom{n}{i} f(i)
$$

alpha(k)

设 $\alpha(k)$ 是钦定满足 $i$ 个性质的方案数之和,通常 $\alpha(k)$ 可以方便地求出或者表示出,然后考虑利用 $\alpha(k)$ 求目标量(不妨设作 $\beta(k)$)。

第一种想法是利用 $\alpha(k)$ 的信息,直接 DP 求出目标量 $\beta(k)$ 。

第二种想法是 $\beta(k)$ 一定可以表示 $\alpha(k)$ 附带上容斥系数的累加,考虑求解容斥系数,利用二项式反演将容斥系数表示出来,接着要么找规律,要么推式子,要么直接多项式求逆。本文采用的都是第二种想法。

beta(k)

$\beta(k)$ :恰好满足 $k$ 个性质的方案数。

设 $\beta(k)$ 与 $\alpha(k)$ 的关系为:

$$
\beta(k) = \sum_{i = 0} ^ n \alpha(i) f(i)
$$

考虑一个满足 $x$ 个性质的方案,它应该被统计 $[x = k]$ 次,实际上被统计的次数为:

$$
\sum_{i = 0} ^ x \binom{x}{i} f(i)
$$

所以

$$
[x = k] = \sum_{i = 0} ^ x \binom{x}{i} f(i)
$$

根据二项式反演,得

$$
f(x) = \sum_{i = 0} ^ x (-1) ^ {x - i} \binom{x}{i} [i = k] \\
$$

对 $x < k$ 和 $x \ge k$ 进行分类讨论,可以推出

$$
f(x) = \begin{cases} 0 & , x < k \\ (-1) ^ {x - k} \binom{x}{k} & , x \ge k \end{cases}
$$

综上所述,

$$
\beta(k) = \sum_{i = k} ^ n (-1) ^ {i - k} \binom{i}{k} \alpha(i)
$$

gamma(k)

$\gamma(k)$ :至多满足 $k$ 个性质的方案数。

类似地,设

$$
\gamma(k) = \sum_{i = 0} ^ n \alpha(i) f(i)
$$

$$
[x \le k] = \sum_{i = 0} ^ x \binom{x}{i} f(i)
$$

$$
f(x) = \sum_{i = 0} ^ x (-1) ^ {x - i} \binom{x}{i} [x \le k]
$$

对 $x \le k$ 和 $x > k$ 进行分类讨论,解得

$$
f(x) = \begin{cases} \left[ x = 0 \right] & , x \le k \\ (-1) ^ {x + k} \binom{x - 1}{k} & , x > k \end{cases}
$$

综上所述,

$$
\gamma(k) = \alpha(0) + \sum_{i = {k + 1}} ^ n (-1) ^ {i + k} \binom{i - 1}{k}
$$

lambda(k)

$\lambda(k)$ :恰好满足 $k$ 的倍数个限制的方案数

$$
[x \equiv 0 \pmod k] = \sum_{i = 0} ^ x \binom{x}{i} f(i)
$$

$$
\begin{aligned}
f(x) & = \sum_{i = 0} ^ x (-1) ^ {x - i} \binom{x}{i} [i \equiv 0 \pmod k] \\
& = \sum_{i = 0} ^ x (-1) ^ {x - i} \binom{x}{i} \frac{1}{k} \sum_{j = 0} ^ {k - 1} (w_k ^ i) ^ j \\
& = \frac{(-1) ^ x}{k} \sum_{j = 0} ^ {k - 1} \sum_{i = 0} ^ x \binom{x}{i} (- w_k ^ j) ^ i \\ & = \frac{(-1) ^ x}{k} \sum_{j = 0} ^ {k - 1} {(1 - w_{k} ^ j)} ^ x
\end{aligned}
$$

综上所述,

$$
\lambda(k) = \sum_{i = 0} ^ x \alpha(i) \frac{(-1) ^ i}{k} \sum_{j = 0} ^ {k - 1} (1 - w_k ^ j) ^ i
$$

组合数形式的容斥原理

标签:body   规律   想法   初学者   多项式   amp   AC   beta   ase   

原文地址:https://www.cnblogs.com/Sdchr/p/8719077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!