Min-Max 容斥的证明

这里有 Min-Max 容斥的证明以及唯一一道博主做过的例题...

上个结论:

\[Min\{S\}=\sum_{T\subseteq S,T\not=\varnothing}(-1)^{|T|-1}Max\{T\} \]

\[Max\{S\}=\sum_{T\subseteq S,T\not=\varnothing}(-1)^{|T|-1}Min\{T\} \]

具体的证明其实很简单...我们考虑证明其中一个(以第一个为例),另一个可以用类似证法得到结论。咱直接考虑集合内元素不重的情况,因为相同大小我们强制规定他们之间存在大小关系就好了,并不影响结果

那么我们再把元素从小到大排个序,从前往后考虑每个值对答案的贡献...

首先第一个元素有贡献当且仅当集合里只有它一个元素,那么这样的集合只有一个,所以它的贡献有且仅有一次;

对于第二个元素,它除了自己一定要选以外,比他小的元素(这时只有第一个元素)全部可选可不选,总共有 \(2^{1}=2\) 种方案,并且集合大小为奇数和为偶数的情况各有一次,两者贡献抵消

对于后面的元素,可以用第二个元素类似的思路去想,最后我们发现除第一个元素以外的所有贡献都相互抵消了

当然咱也可以用二项式定理草率地证明一下,然后也能发现贡献相抵了,究其原因就是杨辉三角奇数列和偶数列之差为 0 ,而第一行为 1 是个特例 (因为只有一个元素)

于是乎得证...

例题:按位或

这题里面的期望满足使用 Min-Max 容斥的性质...

题解点 这里

原文地址:https://www.cnblogs.com/Judge/p/11625045.html

时间: 2024-11-07 23:33:45

Min-Max 容斥的证明的相关文章

「总结」容斥。二.反演原理

二.反演原理 0.综述 说一下个人对反演的理解. 反演是一种手段,一种处理已知信息和未知信息关系的手段,用来得到未知信息的方式.也就是以一种既定的手段在较小的时间复杂度内用已知的信息得到未知的信息. 还有$zsq$学长更加浅显的解读. 反演一般就是把一个好看但难算的式子转化成一个难看且难算的式子在转化为一个难看但好算的式子. 先来一个裸一点的反演 下面要说我知道的四种反演. 子集反演,针对的是集合交并的容斥. 二项式反演,针对组合原理的容斥. 莫比乌斯反演,针对约数和倍数的容斥. 斯特林反演,针

HDU 3929 Big Coefficients(容斥+证明)

(1 + x)^n 的奇数项系数个数等于 2^(bitcount(n)),bitcount(x)为x有多少个1. 然后容斥 枚举每一项存在不存在,然后容斥加加减减即可 这题用二进制枚举会T,只能DFS 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 15; typedef long long ll; int t, n; ll

min_max容斥

min_max容斥 用途 对于一个集合S,给出每个元素出现的概率,我们需要求每一个元素都出现至少一次的期望次数,可以使用min_max容斥. 例题 HDU-4336 Card Collector 这题当然可以状压dp,注意可能随机到本身有的元素的情况即可.时间复杂度\(O(2^n*n)\),空间复杂度\(O(2^n)\) 但是,用以下方法时空效率都会更高,时间复杂度\(O(2^n)\),空间复杂度是\(O(n)\)的,并且非常好写. 定义 对于一个集合S \(min(S)\)表示这个集合第一个出

hdu4624 Endless Spin (min-max容斥+dp)

min-max容斥: $$max\{a_i\}=\sum\limits_{S}(-1)^{|s|-1}min\{a_i|a_i \in S\}$$ 关于证明,可以把一个数$a$看作是集合$\{1...a\}$,于是max相当于取并集,min相当于取交集,就变成了普通的容斥 然后这道题就可以dp了 然而我一直被卡精度 以下代码大概是对的( 1 #include<bits/stdc++.h> 2 #include<tr1/unordered_map> 3 #define CLR(a,x

数论 + 容斥 - HDU 4059 The Boss on Mars

The Boss on Mars Problem's Link Mean: 给定一个整数n,求1~n中所有与n互质的数的四次方的和.(1<=n<=1e8) analyse: 看似简单,倘若自己手动推公式的话,还是需要一定的数学基础. 总的思路:先求出sum1=(1^4)+(2^4)+...(n^4),再求出sum2=(1~n中与n不互质的数的四次方的和),answer=sum1-sum2. 如何求sum1呢? 有两种方法: 1.数列差分.由于A={Sn}={a1^4+a2^4+...an^4}

hdu1695:数论+容斥

题目大意: 求x属于[1,b]和 y属于[1,d]的 gcd(x,y)=k 的方案数 题解: 观察发现 gcd()=k 不好处理,想到将x=x/k,y=y/k 后 gcd(x,y)=1.. 即问题转化为求区间 [1,b/k]和 [1,d/k]的互质数对个数 由于题目规定 (x,y)和(y,x)是同一种,所以我们可以规定 x<y,,然后只需对每一个y求出比他小的即可 公共部分可以通过欧拉函数快速求出.. 非公共部分就不行了.. 所以就分解质因数,用容斥的方法求了 #include <iostre

HDU 6053 TrickGCD 莫比乌斯函数/容斥/筛法

题意:给出n个数$a[i]$,每个数可以变成不大于它的数,现问所有数的gcd大于1的方案数.其中$(n,a[i]<=1e5)$ 思路:鉴于a[i]不大,可以想到枚举gcd的值.考虑一个$gcd(a_1,a_2,a_3…a_n)=d$,显然每个$a_i$的倍数都满足,有$\frac{a_i}{d}$种方案 那么一个d对答案的贡献为\[\prod_{i=1}^{min(a)}{\lfloor\frac{a_i}{d}\rfloor}    \] 但是所有的d计入会有重复情况,考虑容斥,对d进行素数分

SPOJ - AMR11H Array Diversity (水题排列组合或容斥)

题意:给定一个序列,让你求两种数,一个是求一个子序列,包含最大值和最小值,再就是求一个子集包含最大值和最小值. 析:求子序列,从前往记录一下最大值和最小值的位置,然后从前往后扫一遍,每个位置求一下数目就好. 求子集可以用排列组合解决,很简单,假设最大值个数是 n,最小值的数是 m,总数是 N,答案就是 (2^n-1) * (2^m-1)*2^(N-m-n), 当然要特殊判断最大值和最小值相等的时候. 当然也可以用容斥来求,就是总数 - 不是最大值的数目 - 不是最小值的数目 + 不是最大值也不是

HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由于得到每张卡片的状态不知道,所以用状态压缩,dp[i] 表示这个状态时,要全部收齐卡片的期望. 由于有可能是什么也没有,所以我们要特殊判断一下.然后就和剩下的就简单了. 另一个方法就是状态压缩+容斥,同样每个状态表示收集的状态,由于每张卡都是独立,所以,每个卡片的期望就是1.0/p,然后要做的就是要去重,既然