设\(S\)是一个集合,\(\max(S)\)和\(\min(S)\)分别表示集合中的最大值与最小值。

那么有如下式子成立:
\[\max(S)=\sum_{T \subseteq S}(-1)^{|T|+1}\min(T)\]
\[\min(S)=\sum_{T \subseteq S}(-1)^{|T|+1}\max(T)\]

因为证明很简单就写一下吧,以第一个式子为例,设\(\max(S)=x\),那么只有\(T=\{x\}\)时的\(\min(T)\)为\(x\)(可能有多个相同的最大值,这时候随便钦点一个就可以了),对于除此之外的所有\(T\),肯定至少存在一个集合中的数\(y\)使得\(\min(T \cup \{y\})=\min(T)\),假设有\(k\)个这样的\(y\),那么从中选奇数个和选偶数个的方案数是一样的,于是\(\min(T)\)就被抵消了。

这个式子在期望下也是成立的,即:
\[E[\max(S)]=\sum_{T \subseteq S}(-1)^{|T|+1}E[\min(T)]\]

用期望的线性性证明即可。

于是就可以用来做题了,一般的套路是每个位置有概率从\(0\)变成\(1\),问都变成\(1\)的期望步数,这就是\(\max(S)\),然后就反演成\(\min(T)\),至少一个数变成\(1\)的期望就好做很多了。

\(upd\):来填坑了...现在来介绍一下最值反演的推广:通过求\(\min\)来求第\(k\)大(\(kth\max\))。前置知识是二项式反演,如果不知道请戳这里

我们来尝试构造一个函数\(f\),使得:

\[kth\max(S)=\sum_{T \subseteq S} f_{|T|}\min(T)\]

然后来考虑一下对于集合中第\(i\)大的元素,如果\(\min(T)\)等于这个元素,那么只有比它大的\(i-1\)个元素是可能存在的,那么它的贡献就是:

\[\sum_{j=0}^{i-1} {i-1 \choose j} f_{j+1}\]

也就是说\(f\)需要满足:

\[\sum_{j=0}^{i-1} {i-1 \choose j} f_{j+1}=[i=k]\]

等价于:

\[\sum_{j=0}^i {i \choose j} f_{j+1}=[i=k-1]\]

为了方便我们用\(\widehat f_i=f_{i+1}\)替换\(f\),然后用\(g_i\)表示\([i=k-1]\),那么就得到:

\[\sum_{j=0}^i {i \choose j} \widehat f_j=g_i\]

看这个是不是一个经典的二项式反演的形式呀,所以二项式反演一下:

\[\widehat f_i=\sum_{j=0}^i (-1)^{i-j} {i \choose j} g_j\]

然后因为\(g_i=[i=k-1]\),所以上面的式子只有\(j=k-1\)这一项是有贡献的,我们再把\(f\)替换回去,得:

\[f_{i+1}=(-1)^{i-k+1} {i \choose k-1}\]

再把\(f_{i+1}\)替换成\(f_i\),最终得到:

\[f_i=(-1)^{i-k} {i-1 \choose k-1}\]

终于结束啦!

\[kth\max(S)=\sum_{T \subseteq S} (-1)^{|T|-k} {|T|-1 \choose k-1} \min(T)\]

同时我们可以发现如果要求第\(k\)大,那么只需要计算元素个数\(\geq k\)的子集就可以了。

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. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【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. SuperMap -WebGL 实现地球的背景透明并显示自定义图片

    实现效果如图: 实现代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  2. python(day16)内置函数,匿名函数

    # add = lambda x,y:x+y # print(add(1,2)) # dic={'k1':10,'k2':100,'k3':30} # def func(key): # return ...

  3. IT java培训机构名单(不全)

    基本都是借着招聘的幌子来招生的 1 百影世纪(北京)文化传媒有限公司 2 北京博创智软科技有限公司 3 北京博达远创科技发展有限公司 4 北京春玉影视文化传媒有限公司 5 北京顶测科技有限公司 6 北 ...

  4. JavaScript(三)数据类型转换

    类型转换JavaScript中的取值类型非常灵活,如当JavaScript期望使用一个布尔值的时候,你可以提供其它数据类型的,JavaScript将根据需要自行转换数据类型.如下示例: 10 + “o ...

  5. Page Cache与Page回写

    综述 Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能.此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page ...

  6. c/c++ llinux epoll系列4 利用epoll_wait实现非阻塞的connect

    llinux epoll系列4 利用epoll_wait实现非阻塞的connect connect函数是阻塞的,而且不能设置connect函数的timeout时间,所以一旦阻塞太长时间,影响用户的体验 ...

  7. 【转载】FPGA算法映射要点

    近期一直在学习利用FPGA完成算法的定点运算,转载些相关的博客方面回顾查找.本博文原文链接为:https://blog.csdn.net/u013989284/article/details/7899 ...

  8. codeforces/contest/803/problem C

    题目:C. Maximal GCD 题意:输入n,k.将n拆成k个数的序列,使得这k个数的gcd最大.(且序列严格递增).1 ≤ n, k ≤ 1010 . 分析:假设k个数的gcd为d,则一定有d| ...

  9. MySQL的Limit详解

    问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Server数据库中语法为: S ...

  10. SQLServr添加数据列

    数据列定义 表中数据行的数据插入和数据类型都是基于数据列的,学会添加数据列在开发过程中是必不可少的. 使用SSMS数据库管理工具添加数据列 在数据表中添加一列或者多列步骤相同 1.连接数据库,选择数据 ...