min-max容斥
min-max容斥,又名最值反演。常用于最大值或最小值一边好求而一边难求的情况。
以下我们只考虑用最小值求最大值的方法。(如果是最大值求最小值,形式完全相同,只是把所有 \(\max\) 和 \(\min\) 调换位置)
基本形式
记 \(\max(S)\) 表示集合 \(S\) 中的最大值,\(\min(S)\) 表示最小值,则有:
我们考虑将数组降序排列,对于一个元素 \(A_k\) 的贡献。此时它为第 \(k\) 大。
-
\(k=1\) ,当且仅当 \(T=\set{1}\) 时有贡献,且贡献系数为 \((-1)^0=1\),也就是对整体答案贡献了一个 \(A_1\)
-
\(k>1\) ,如果 \(A_k\) 要成为最小值,则集合里可能其他的元素为 \(A_{k-1},A_{k-2},...,A_1\),一共 \(2^{k-1}\) 种情况。而我们又根据常识
(bushi)知道,这些种情况中,集合大小为奇数和偶数的情况各占一半,因此系数完美抵消。
ps. 要想证明 \(2^k\) 种选数情况中集合大小奇偶数各占一半也很简单。我们考虑把最后一位先拿掉,让前面的 \(2^{k-1}\) 种情况随便来,然后如果前面选了奇数个数最后一位就不选,前面选了偶数个数最后一位就选,如此,我们就构造出来集合大小为奇数个的情况,共 \(2^{k-1}\) 种。那么偶数的情况就是另一半了。
推广形式
记 \(k\max(S)\) 表示集合 \(S\) 的第 \(k\) 大值,则有:
证明: 我们设 \(k\max(S)=\sum_{T\subseteq S} g(|T|) \min(T)\),并对 \(S\) 中的元素降序排序。同样考虑某个元素 \(A_p\) 表示第 \(p\) 大。
考虑 \(A_p\) 对整体的贡献系数。只有在集合中不包含比它小的元素时它才有贡献。它对等式右边的贡献系数是 \(\sum_{i=0}^{p-1} \binom{p-1}{i}g(i+1)\) .(考虑前面是有贡献的情况数,后面是我们设的东西)
那么若等式成立,则有
这个形式有点微妙,设 \(F(i)=[i+1=k],G(i)=g(i+1)\) ,有
二项式反演得
那么 \(g(i)=G(i-1)=(-1)^{i-k}\binom{i-1}{k-1}\) ,原式成立。
应用
我们根据例题来看min-max容斥的常见用法
「HAOI2015」按位或
注意到 \(E(\max(a,b)) \neq \max(E(a),E(b))\),所以我们很难计算期望最值之类的问题,但:min-max容斥的式子在期望的环境下同样适用!!
前置知识看完了,我们回到题面。因为求的是或,所以每一位分开看就是考虑计算期望出现时间最大的一位。即,设 \(t_i\) 表示 \(i\) 位出现的最晚时间,求 \(E(max(ti))\)。
发现 \(min(S)\) 的期望是好求的,(还是一个正难则反的思想),就是一定满足前面选的都是 \(S\) 的补集,到某一个时间选择了和 \(S\) 有交集的一个东西,这个期望经过推理就是 \(\frac{1}{1-\sum_{T\cap S = \emptyset} P(T)}\)。
然后我们必须找一种方法来快速求解这个子集和。高位前缀和、FMT/FWT的或卷积都可以。
「BZOJ4833」最小公倍佩尔数
可以通过拆式子等一系列操作推出 \(f\) 的递推式:\(f(n)=2f(n-1)+f(n-2)\)
然后就开始我根本不会的东西了。有一个引理:若 \(f(0)=0,f(1)=1,f(n)=af(n-1)+bf(n-2)\) ,且 \(gcd(a,b)=1\) ,则 \(gcd(f(x),f(y))=f(gcd(x,y))\)。证明上使用辗转相除法。
我们的min-max容斥在gcd与lcm方面也适用!!
这实际上就是在对每个质因子做min-max容斥!因为我们的lcm就是想要找到所有质因子出现的最高次数。
然后对于本题 \(lcm(S)=g(n),gcd(T)=f_{gcd(T)}\),带入,然后看到gcd就想到枚举gcd并用莫反就行了。

浙公网安备 33010602011771号