计数就是集合对数的映射
f
(
S
)
f(S)
f(S)
1.关于集合:
运算:
①交并补
②加减(可重集意义下)积(笛卡尔积)
原理:容斥,德摩根,容斥反演 这在 容斥.doc 中都有。
2.贡献法则
两个对象a,b,让b对a做贡献。则b对a的贡献等于a从b得到的贡献。
3.考察
f
(
S
)
f(S)
f(S)
考虑最基本的
f
(
S
)
=
∣
S
∣
f(S)=|S|
f(S)=∣S∣
有加法原理与乘法原理
∣
A
+
B
∣
=
∣
A
∣
+
∣
B
∣
∣
A
×
B
∣
=
∣
A
∣
×
∣
B
∣
|A+B|=|A|+|B|\\|A\times B|=|A|\times |B|
∣A+B∣=∣A∣+∣B∣∣A×B∣=∣A∣×∣B∣
考虑一般的
f
(
S
)
f(S)
f(S)
定义运算
s
y
m
sym
sym满足集合加的所有性质(交换律,结合律,有逆运算,是二元运算…)。
定义
s
y
m
sym
sym意义下关注元素集合运算
f
f
f
∀
A
,
B
f
(
A
+
B
)
=
f
(
A
)
s
y
m
f
(
B
)
⟺
∀
f
(
S
)
=
S
Y
M
x
∈
S
f
(
{
x
}
)
\forall A,B~~~~f(A+B)=f(A)\ sym\ f(B)\iff \forall f(S)=SYM_{x \in S}f(\{ x \})
∀A,B f(A+B)=f(A) sym f(B)⟺∀f(S)=SYMx∈Sf({x})
显然
∣
S
∣
|S|
∣S∣是
+
+
+意义下关注元素集合运算。
既然集合有那么多原理
考虑用于计数。
那么我们有可以考虑是否可以将原理中的集合改成集合的函数,将原理中的加替换为
s
y
m
sym
sym,减替换为
s
y
m
sym
sym的逆运算。
是否成立需要对具体的
f
f
f进行分析。
但是在这里,所有关注元素集合运算都适用于容斥与德摩根。任意函数都适用于容斥反演。
关注元素集合运算应用贡献法则可以改为:
两个集合
A
,
B
A,B
A,B,让
B
B
B中所有元素对
A
A
A的总贡献(所有贡献都以
s
y
m
sym
sym加合起来),等于
A
A
A中所有元素得到的总贡献。
这告诉了我们计算
A
A
A得到的总贡献除了看
A
A
A中的元素,还有另一种计算方式:枚举
B
B
B的所有元素,考虑它们对
A
A
A的总贡献。
有时这个集合
B
B
B是我们自己定义的。通过
B
B
B计算对
A
A
A的总贡献与
A
A
A中所有元素得到的总贡献可以建立等式,得出一些结论。
最常见的一个应用:
对于
A
A
A中的每个元素,构造一个
B
B
B,
B
B
B对它的总贡献都是常数
c
c
c(通常为1)。那么枚举
B
B
B的所有元素可以求出
A
A
A得到的总贡献,而A中所有元素得到的总贡献为
c
∣
A
∣
c|A|
c∣A∣。因此可以求出
∣
A
∣
|A|
∣A∣.
如何构造
B
B
B?首先在A的所有元素中找到共同点,从而构造出
c
c
c。然后观察出是谁贡献的。包含所有“谁”的集合就是
B
B
B