$2018/8/19 = Day5$学习笔记 + 杂题整理

(mathcal{Morning})

(Task 1) 容斥原理

大概这玩意儿就是来用交集大小并集大小或者用并集大小交集大小(2333)

那窝萌思考已知(A_1,A_2,A_3 cdots A_n),求(|A_1 cup A_2 cup A_3 cdots A_n|)

那我们考虑用(|A_1 cap A_2 cap A _3 cdots A_n|)来推

(emmmm)实际上就是$$|A_1 cup A_2 cup A_3 cdots A_n| = sumlimits_{k=1}^{n}{(-1)^{k-1}sum limits_{1 leq i_1 < i_2 cdots i_k leq n}|A_{i_1} cap A_{i_2} cap cdots A_{ik}| }$$

这个问题其实换一种方式思考,就可以逆过来推出(|A_1 cap A_2 cap A_3 cdots A_n|)

因为$$|A_1 cap A_2 cap A_3 cdots A_n| = overline {overline {A_1} cup overline {A_2} cdots cup overline {A_n}}$$

我们直接暴力带入容斥的基本公式,(233)好像很麻烦的样子

那么可以有$$|A_1 cap A_2 cap A_3 cdots A_n| = 2^n - sumlimits_{k=1}^{n}{(-1)^{k-1}sum limits_{1 leq i_1 < i_2 cdots i_k leq n}overline{|A_{i_1} cup A_{i_2} cup cdots A_{i_k}|} }$$

我们可以把最后一项的补集拿掉,变成这样:

[|A_1 cap A_2 cap A_3 cdots A_n| = 2^n - sumlimits_{k=1}^{n}({(-1)^{k-1} cdot inom{n}{k} cdot 2^n - sum limits_{1 leq i_1 < i_2 cdots i_k leq n}|A_{i_1} cup A_{i_2} cup cdots A_{i_k}|} ) ]

我一开始把(Sigma) 里面的全集当成了(2^k)……(GG)然后还因为没有加括号被胡佳琛嘲讽了一顿( m{TAT})

似乎知道这些并没有什么用,因为题目里面根本不可能这么浅显(2333) ……

今时今日所记,不期理解多么深刻,只期不忘却罢了。

小例题:

(color{red}{mathcal{Description}})

(n × m) 的棋盘上放棋子。 棋子有 (c) 种不同的颜色。 同一个位置最多放一个棋子。 要求每行至少有一个棋子,每列至少有一个棋子,每种颜色的棋子至少在棋盘中有一个。 求方案数对 (P) 取模。 (n, m, c ≤ 100, P ≤ 10^9)

这个题就是一个容斥题……不会不会(233)

(color{red}{mathcal{Solution}})

一般来说,这种容斥题目,都是有着某种诡异的限制,比如什么"每行每列至少放XXX个","不合法的情况包括"之类的专业智障词汇……所以我们在思考容斥的状态时不妨把这些也考虑进去。

不用慌,其实我在写下这些文字的时候也是很蒙圈,也是一边(Tab + Alt)看题解一边写的,所以不要担心,大家水平都不咋地。

啊哈哈哈哈哈哈只是开个玩笑啦~

此处考虑一个限制条件:至少一个。那么不妨令 (A_i) 表示第 (i) 行至少有一个棋子的方案, (B_j) 表示第 j 列至少有一 个棋子的方案, (C_k) 表示第 (k) 种颜色的棋子至少有一个的方案。

那我们其实要求的就是一个一个大交集:$$A_1 cap A_2 cap A_n cap B_1 · · · cap B_m cap C_1 · · · cap C_c$$。

那么接着令(f(p, q, r)) 表示违反了 (p) 个行限制, (q)个列限制, (r) 个颜色限制的 方案数。

▶ $$f(p, q, r) = inom{n}{p} inom{m}{q} inom{c}{q}(c + 1 - r)^{(n-p)(m-q)}$$.

答案是 $$∑ limits _{p=0}^{n}∑limits _{q=0}^{m}∑limits _{r=0}^{c}(-1)^{p+q+r}f(p, q, r)$$。 可以用 (O(100^2)) 时间预处理组合数, (O(nmc ~~log(nm))) 暴力计算。

怕了吧,还有更可怕的(233)

(color{red}{mathcal{Description-plus}})

问题不变,但是(n, m, c ≤ 1000)

(color{red}{mathcal{Solution-plus}})

(hh)看起来(n^3)量级的算法过不去了……那么思考二项式定理

我们展开(f)就会有

$$ ∑ limits _{p=0}^{n}∑limits _{q=0}^{m}∑limits _{r=0}^{c}(-1)^{p+q+r}inom{n}{p} inom{m}{q} inom{c}{q}(c + 1 - r)^{(n-p)(m-q)}$$

继而稍微稍微交换一下求和顺序有

$$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q} ∑limits _{q=0}^{m}(-1)^qinom{m}{q} (c + 1 - r)^{(n-p)(m-q)}$$

好像有些眉目……?继续

$$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q} ∑limits _{q=0}^{m}(-1)^qinom{m}{q} ((c + 1 - r)^{n-p})^{(m-q)}$$

我们会发现——又是泥!二项式定理!

$$ ∑ limits _{p=0}^{n}∑limits _{r=0}^{c}(-1)^{p+r}inom{n}{p} inom{c}{q}((c+1-r)^{n-p}-1)^m$$

我顿时发现好像构造二项式定理好像在组合问题中很常见,所以感觉好厉害的样子(233)

不知道(Day1)的出题人当时出了一道这种题是怎么个想法,有可能他是为了提醒我们或者启发我们这个(trick)

原文地址:https://www.cnblogs.com/pks-t/p/9499703.html