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. TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

    前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用.但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用 ...

  2. Excel使用IF{1,0}虚拟数组+VLOOKUP实现联合查询

    以此案例举例: 使用IF({1,0})建立虚拟数据的方法,整体输入的公式是: =VLOOKUP(E2&F2,IF({1,0},A:A&B:B,C:C),2,0) 输入完公式之后,需要按 ...

  3. C#调用Python代码的方式(二),以PaddleOCR-GUI为例

    前言 前面介绍了在C#中使用Progress类调用Python脚本的方法,但是这种方法在需要频繁调用并且需要进行数据交互的场景效果并不好,因此今天分享的是C#调用Python代码的方式(二):使用py ...

  4. 【报错解决】【Python】'Failed to import pydot. You must pip install pydot and install graphviz (https://graphviz.gitlab.io/download/), ', 'for pydotprint to work.'

    可视化函数式API的形式seq2seq模型的过程中发生报错. 报错内容: 'Failed to import pydot. You must pip install pydot and install ...

  5. 【MyBatis】学习笔记14:通过collection解决一对多的映射关系

    MyBatis14:通过collection解决一对多的映射关系 目录 MyBatis14:通过collection解决一对多的映射关系 对象 接口 映射文件 测试 总结 注意事项 已知,一个部门对应 ...

  6. Qt编写ERP库存库房发货电子看板

    一.前言 有了之前可视化大屏电子看板系统的经验,要做这个ERP库存库房发货电子看板,可以说是水到渠成轻车熟路,技术难度比之前做过的各种大屏系统的子模块都要简单.由于库存库房发货数据的特殊性,基本上都是 ...

  7. Qt编写地图综合应用36-覆盖物折线

    一.前言 折线图目前应用最广的也是用来绘制各种轨迹,折线图其实就是后面动态轨迹图.飞机航线图的前身,公用的一个方法addPolyline,折线图可以设置颜色.粗细.透明度等属性,如果开启了悬浮绘图工具 ...

  8. Qt编写安防视频监控系统63-子模块7悬浮地图

    一.前言 悬浮地图子模块,使用的百度地图,支持在线和离线,用于显示对应设备的位置,支持鼠标直接拖动和缩放.本系统将各个地方需要的地图模块+浏览器模块都合并到一个地图内核模块,这样需要使用的时候只需要n ...

  9. Win10系统安装vue-cli运行环境以及vue在和vue-cli在windows10系统下的默认安装路径(目录)

    WIN10系统安装vue-cli运行环境: 1.Win10系统安装VUE及环境配置解析 2.使用vue-cli创建项目 3.vue在和vue-cli在windows10系统下的默认安装路径(目录)为: ...

  10. spark (五) RDD的创建 & 分区

    目录 1. RDD的创建方式 1.1 从内存创建RDD 1.2 从外部存储(文件)创建RDD 1.3 从其他的RDD创建 1.4 直接 new RDD 2. 分区(partition) 2.1 mak ...