min-max容斥

min-max容斥,又名最值反演。常用于最大值或最小值一边好求而一边难求的情况。

以下我们只考虑用最小值求最大值的方法。(如果是最大值求最小值,形式完全相同,只是把所有 \(\max\)\(\min\) 调换位置)

基本形式

\(\max(S)\) 表示集合 \(S\) 中的最大值,\(\min(S)\) 表示最小值,则有:

\[\max(S)=\sum_{T\subseteq S,T\neq \emptyset}(-1)^{|T|-1}\min(T) \]

我们考虑将数组降序排列,对于一个元素 \(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,|T|\geq k} (-1)^{|T|-k} \binom{|T|-1}{k-1} \min(T) \]

证明: 我们设 \(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)\) .(考虑前面是有贡献的情况数,后面是我们设的东西)

那么若等式成立,则有

\[[p=k]=\sum_{i=0}^{p-1} \binom{p-1}{i}g(i+1) \]

这个形式有点微妙,设 \(F(i)=[i+1=k],G(i)=g(i+1)\) ,有

\[F(i)=\sum_{j=0}^i\binom{i}{j}G(j) \]

二项式反演得

\[G(i)=\sum_{j=0}^i(-1)^{i-j}\binom{i}{j}F(j)=(-1)^{i-k+1}\binom{i}{k-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容斥的式子在期望的环境下同样适用!!

\[E(\max(S))=\sum_{T\subseteq S,T\neq \emptyset}(-1)^{|T|-1}E(\min(T)) \]

\[E(k\max(S))=\sum_{T\subseteq S,|T|\geq k} (-1)^{|T|-k} \binom{|T|-1}{k-1} E(\min(T)) \]

前置知识看完了,我们回到题面。因为求的是或,所以每一位分开看就是考虑计算期望出现时间最大的一位。即,设 \(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方面也适用!!

\[lcm(S)=\prod_{T\subseteq S} \gcd(T)^{(-1)^{|T|-1}} \]

这实际上就是在对每个质因子做min-max容斥!因为我们的lcm就是想要找到所有质因子出现的最高次数。

然后对于本题 \(lcm(S)=g(n),gcd(T)=f_{gcd(T)}\),带入,然后看到gcd就想到枚举gcd并用莫反就行了。

posted @ 2025-03-09 17:57  theWeeds'Defense  阅读(141)  评论(0)    收藏  举报