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\) 之间的关系,具体证明可以看这个题解的引理四,这里不再做详细证明。

min-max 容斥(最值反演)学习笔记的更多相关文章

  1. [HDU4336]Card Collector(min-max容斥,最值反演)

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. min-max容斥/最值反演及其推广

    设\(S\)是一个集合,\(\max(S)\)和\(\min(S)\)分别表示集合中的最大值与最小值. 那么有如下式子成立: \[\max(S)=\sum_{T \subseteq S}(-1)^{| ...

  3. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. BZOJ 2005 [Noi2010]能量采集 (数学+容斥 或 莫比乌斯反演)

    2005: [Noi2010]能量采集 Time Limit: 10 Sec  Memory Limit: 552 MBSubmit: 4493  Solved: 2695[Submit][Statu ...

  5. BZoj 2301 Problem b(容斥定理+莫比乌斯反演)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 7732  Solved: 3750 [Submi ...

  6. 【容斥原理,莫比乌斯反演】用容斥替代莫比乌斯反演第二种形式解决gcd统计问题

    名字虽然很长.但是其实很简单,对于这一类问题基本上就是看你能不能把统计的公式搞出来(这时候需要一个会推公式的队友) 来源于某次cf的一道题,盼望上紫的我让潘学姐帮我代打一道题,她看了看跟我说了题解,用 ...

  7. hdu1695(容斥 or 莫比乌斯反演)

    刚开始看题,想了一会想到了一种容斥的做法.复杂度O( n(3/2) )但是因为题目上说有3000组测试数据,然后吓尿.完全不敢写. 然后想别的方法. 唉,最近精神有点问题,昨天从打完bc开始想到1点多 ...

  8. ZOJ 3868 GCD Expectation (容斥+莫比乌斯反演)

    GCD Expectation Time Limit: 4 Seconds     Memory Limit: 262144 KB Edward has a set of n integers {a1 ...

  9. LOJ3119 CTS2019 随机立方体 概率、容斥、二项式反演

    传送门 为了方便我们设\(N\)是\(N,M,L\)中的最小值,某一个位置\((x,y,z)\)所控制的位置为集合\(\{(a,b,c) \mid a = x \text{或} b = y \text ...

  10. 【CF900D】Unusual Sequences 容斥(莫比乌斯反演)

    [CF900D]Unusual Sequences 题意:定义正整数序列$a_1,a_2...a_n$是合法的,当且仅当$gcd(a_1,a_2...a_n)=x$且$a_1+a_2+...+a_n= ...

随机推荐

  1. MySQL中INSERT INTO ... ON DUPLICATE KEY UPDATE浅析

    最近在做一个阅读次数的需求的时候,有这样一个场景,如果数据库中没有数据,就进行INSERT操作,有数据的话,阅读次数就+1.此处有两种实现方式,一种是想将数据查出来,在Java中进行处理,没有就INS ...

  2. 前端好用API之scrollIntoView

    前情 在前端开发需求中,经常需要用到锚点功能,以往都是获取元素在滚动容器中的位置再设置scrollTop来实现的. scrollIntoView介绍 scrollIntoView()方法将调用它的元素 ...

  3. 如何判断平台是x86还是arm

    case $(uname -m) in x86_64) echo x86;; aarch64) echo arm;; esac ref 上面的代码片改自这里 https://stackoverflow ...

  4. 关于Qt中的qss样式表需要注意的坑

    关于QSS要注意的坑. qss源自css,相当于css的一个子集,主要支持的是css2标准,很多网上的css3的标准的写法在qss这里是不生效的,所以不要大惊小怪. qss也不是完全支持所有的css2 ...

  5. 鸿蒙ArkUI-X简介

    ArkUI是一套构建分布式应用的声明式UI开发框架.它具备简洁自然的UI信息语法.丰富的UI组件.多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用 ...

  6. Apollo功能及原理详解

    前言 公司里面使用的配置中心是携程开源的Apollo,之前我只使用过Nacos,遂记录一下学习过程. Apollo工作原理 模块介绍 上图就是Apollo的总体设计,从下往上挨个分析: ConfigD ...

  7. API接口请求小结

    API接口请求小结 一.python: API接口请求 1.1 multipart/form-data类型请求 参数类型:数组 1.2 multipart/form-data类型请求 参数类型:文件流 ...

  8. 微信小程序开发基础详解

    1.结构 util.js      工具类 app.js          全局工具函数 app.json      小程序配置 app.wxss     全局样式 2.生命周期 onLoad(opt ...

  9. Solution Set - “愿所有罗盘都指向那片海洋”

    目录 0.「NOI Simu.」哈希计数 1.「NOI Simu.」运输计划 2.「NOI Simu.」时代的眼泪 3.「Subset」LP 的被动练习 4.「EC Final 2018」「LOJ # ...

  10. wix tool 打包官方例子

    wixtoolset 和VS 插件:https://wixtoolset.org/releases/ 教学:https://www.firegiant.com/wix/tutorial/getting ...