min-max 容斥(最值反演)学习笔记
1.$CDQ$ 分治总结2.基环树算法总结3.(抄自己luogu上的博客)莫队总结4.珂朵莉树总结5.虚树总结6.从龟速乘到 $Miller-Rabin$ 算法(数论算法总结)7.浅谈李超线段树8.浅谈长链剖分9.浅谈平衡树10.可持久化数据结构算法总结11.线段树运用进阶12.群论学习笔记13.线性基学习笔记14.LCT 学习笔记15.原根学习笔记+BSGS复习笔记16.多项式算法初探:从 FFT 到 NTT17.下降幂、斯特林数学习笔记18.多项式算法再探:FMT 和 FWT
19.min-max 容斥(最值反演)学习笔记
20.自适应 Simpson 积分法学习笔记21.SAM 学习笔记22.min_25 筛 学习笔记min-max 容斥,又名最值反演(我其实更喜欢后面这个名字),是一种常用的反演思想。
引入
在皇后游戏一题中,我们曾经证明过 \(\max(a,b)-a-b=-\min(a,b)\)。
我们尝试推广亿下下这个式子,就会得到两条反演公式:
\[\max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\min(T)
\]
\[\min(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\max(T)
\]
这就是最值反演公式了。
证明
假如我们将集合 \(S\) 升序排序后的数组称为 \(a\),那么容易发现有:
\[\sum_{T\subseteq S}(-1)^{|T|-1}\min(T)=\sum_{i=1}^na_i\sum_{j=0}^{n-i}(-1)^{(j+1)-1}\binom{n-i}j
\]
\[=\sum_{i=1}^na_i0^{n-i}=a_n=\max(S)
\]
假如我们将集合 \(S\) 降序排序后的数组称为 \(b\),那么容易发现有:
\[\sum_{T\subseteq S}(-1)^{|T|-1}\max(T)=\sum_{i=1}^nb_i\sum_{j=0}^{n-i}(-1)^{(j+1)-1}\binom{n-i}j
\]
\[=\sum_{i=1}^nb_i0^{n-i}=b_n=\min(S)
\]
由此最值反演公式得证。
拓展
我们再尝试推广亿下下最值反演公式,得到:
\[\max(S)_k=\sum_{T\subseteq S,|T|\ge k}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)
\]
\[\min(S)_k=\sum_{T\subseteq S,|T|\ge k}(-1)^{|T|-k}\binom{|T|-1}{k-1}\max(T)
\]
其中 \(\max(S)_k,\min(S)_k\) 表示第 \(k\) 大值和第 \(k\) 小值。
同样考虑将集合 \(S\) 升序、降序排序,得到 \(a,b\),则有:
\[\sum_{T\subseteq S,|T|\ge k}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)=\sum_{i=1}^na_i\sum_{j=k-1}^{n-1}(-1)^{j+k-1}\binom j{k-1}\binom{n-i}j
\]
\[=(-1)^{k-1}\sum_{i=1}^na_i\sum_{j=k-1}^{n-1}(-1)^j\frac{(n-i)!}{(k-1)!(j-k+1)!(n-i-j)!}
\]
\[=\frac{(-1)^{k-1}}{(k-1)!}\sum_{i=1}^na_i(n-i)!\sum_{j=k-1}^{n-1}\frac{(-1)^j}{(n-i-k+1)!}\frac{(n-i-k+1)!}{(j-k+1)!(n-i-j)!}
\]
\[=\frac{(-1)^{k-1}}{(k-1)!}\sum_{i=1}^n\frac{a_i(n-i)!}{(n-i-k+1)!}\sum_{j=k-1}^{n-1}(-1)^j\binom{n-i-k+1}{j-k+1}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\sum_{i=1}^n\frac{a_i(n-i)!}{(n-i-k+1)!}\sum_{j=0}^{n-i-k+1}(-1)^j\binom{n-i-k+1}{j}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\sum_{i=1}^n\frac{a_i(n-i)!}{(n-i-k+1)!}0^{n-i-k+1}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\frac{a_{n-k+1}(n-(n-k+1))!}{(n-(n-k+1)-k+1)!}
\]
\[=a_{n-k+1}=\max(S)_k
\]
\[\sum_{T\subseteq S,|T|\ge k}(-1)^{|T|-k}\binom{|T|-1}{k-1}\max(T)=\sum_{i=1}^nb_i\sum_{j=k-1}^{n-1}(-1)^{j+k-1}\binom j{k-1}\binom{n-i}j
\]
\[=(-1)^{k-1}\sum_{i=1}^nb_i\sum_{j=k-1}^{n-1}(-1)^j\frac{(n-i)!}{(k-1)!(j-k+1)!(n-i-j)!}
\]
\[=\frac{(-1)^{k-1}}{(k-1)!}\sum_{i=1}^nb_i(n-i)!\sum_{j=k-1}^{n-1}\frac{(-1)^j}{(n-i-k+1)!}\frac{(n-i-k+1)!}{(j-k+1)!(n-i-j)!}
\]
\[=\frac{(-1)^{k-1}}{(k-1)!}\sum_{i=1}^n\frac{b_i(n-i)!}{(n-i-k+1)!}\sum_{j=k-1}^{n-1}(-1)^j\binom{n-i-k+1}{j-k+1}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\sum_{i=1}^n\frac{b_i(n-i)!}{(n-i-k+1)!}\sum_{j=0}^{n-i-k+1}(-1)^j\binom{n-i-k+1}{j}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\sum_{i=1}^n\frac{b_i(n-i)!}{(n-i-k+1)!}0^{n-i-k+1}
\]
\[=\frac{(-1)^{2k-2}}{(k-1)!}\frac{b_{n-k+1}(n-(n-k+1))!}{(n-(n-k+1)-k+1)!}
\]
\[=b_{n-k+1}=\min(S)_k
\]
变形
最值反演最经典的应用莫过于期望了。
若 \(S\) 集合表示所有元素的出现时间,那么 \(\max(S)\) 就相当于出现最晚的元素出现的时间。由于 \(E(i)E(j)=E(ij),E(i)+E(j)=E(i+j)\) 等期望的优良性质,所以容易证明:
\[E(\max(S))=\sum_{T\subseteq S}(-1)^{|T|-1}E(\min(T))
\]
这个公式在许多不易求出最长期望时间的问题中有着拔群的效果。
另外一个相当经典的应用是 \(\operatorname{lcm}\) 和 \(\gcd\) 之间的关系,具体证明可以看这个题解的引理四,这里不再做详细证明。
合集:
算法总结
分类:
算法总结
, 数学 / 反演 / 最值反演
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)