【学习笔记】Min-max 容斥
经常和概率期望题相结合。
对于全序集合 \(S\),有:
\]
\]
证明
对于 \(x\in S\),假设 \(x\) 是 \(S\) 中第 \(k\) 大的元素,则建立映射\(f:x\rightarrow \{1,2,\dots,k\}\)。
可以得到对于 \(x,y\in S\),有:
\]
\]
因此得到:
\vert f(\max S)\vert&=\bigg\vert \bigcup\limits_{x\in S}f(x)\bigg\vert \\
&=\sum\limits_{T\subseteq S}(-1)^{\vert T\vert -1}\bigg\vert \bigcap\limits_{x\in T}f(x)\bigg\vert\\
&=\sum\limits_{T\subseteq S}(-1)^{\vert T\vert -1}\ \vert f(\min T)\vert\\
\end{aligned}\]
将 \(\vert f(\max S)\vert\) 映射回原式,从而得证。
通俗的说,就是对于除本身集合的其他的集合取最小值时,集合大小为奇数时加上,大小为偶数时减掉,而选奇数个和选偶数个的方案数又是一样的,于是抵消掉了,最后只剩下 \(f(\max\limits_{x\in S} x)\)的贡献。
拓展
\]
背他就完了
应用
常见的应用:有 \(n\) 个变量,每个变量出现的概率为 \(p\)。问每一个变量都出现的期望时间。
根据期望的线性性质,可以得到
\]
其中 \(E(\min T)\) 显然就是 \(\cfrac{1}{\sum\limits_{i\in T}p_i}\)。
例题:礼物
夏川的生日就要到了。作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物。
商店里一共有种礼物。夏川每得到一种礼物,就会获得相应喜悦值 $ W_i$(每种礼物的喜悦值不能重复获得)。
每次,店员会按照一定的概率 \(P_i\)(或者不拿出礼物),将第i种礼物拿出来。 季堂每次都会将店员拿出来的礼物买下来。没有拿出来视为什么都没有买到,也 算一次购买。
众所周知,白毛切开都是黑的。所以季堂希望最后夏川的喜悦值尽可能地高。
求夏川最后最大的喜悦值是多少,并求出使夏川得到这个喜悦值,季堂的期望购买次数。
显然的 Min-max 容斥模板题。最大的喜悦值就是给出的喜悦值的和,而剩下就是套式子了。用 dfs 枚举子集 \(T\),时间效率 \(O(2^n)\) ,空间效率 \(O(n)\)。
#include <bits/stdc++.h>
using namespace std;
const int maxn=30;
int n;
long long ans;
double res;
double p[maxn];
void dfs(int now,double sum,int opt){
if(now==n+1){
if(sum>1e-9)res+=1.0*opt/sum;
return;
}
dfs(now+1,sum+p[now],-opt);
dfs(now+1,sum,opt);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
long long u;
scanf("%lf%lld",&p[i],&u);
ans+=u;
}
printf("%lld\n",ans);
dfs(1,0,-1);
printf("%.3lf\n",res);
return 0;
}
【学习笔记】Min-max 容斥的更多相关文章
- 快速沃尔什变换 (FWT)学习笔记
证明均来自xht37 的洛谷博客 作用 在 \(OI\) 中,\(FWT\) 是用于解决对下标进行位运算卷积问题的方法. \(c_{i}=\sum_{i=j \oplus k} a_{j} b_{k} ...
- min-max 容斥
$\min - \max$ 容斥 Part 1 对于简单的$\min - \max$容斥有一般形式,表达为:$\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-1 ...
- Min-max 容斥与 kth 容斥
期望的线性性: \[E(x+y)=E(x)+E(y) \] 证明: \[E(x+y)=\sum_i \sum_j(i+j)*P(i=x,j=y) \] \[=\sum_i\sum_ji*P(i=x,j ...
- min-max容斥学习笔记
min-max容斥学习笔记 前置知识 二项式反演 \[ f(n)=\sum_{i=0}^n\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{ ...
- [总结] Min-Max容斥学习笔记
min-max 容斥 给定集合 \(S\) ,设 \(\max(S)\) 为 \(S\) 中的最大值,\(\min(S)\) 为 \(S\) 中的最小值,则: \[\max(S)=\sum_{T\in ...
- [学习笔记]min-max容斥
[Learning]min-max容斥以及推广 min-max容斥 就是max(a,b)=min(a)+min(b)-min(a,b) max(a,b,c)=a+b+c-min(a,b)-min(a, ...
- MinMax 容斥 学习笔记
基本形式 \[ \max(S) = \sum_{T\subseteq S, T \neq \varnothing} (-1)^{|T|-1}\min(T) \] 证明 不提供数学证明. 简要讲一下抽象 ...
- $Min\_25$筛学习笔记
\(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...
- [模板] 容斥原理: 二项式反演 / Stirling 反演 / min-max 容斥 / 子集反演 / 莫比乌斯反演
//待更qwq 反演原理 二项式反演 若 \[g_i=\sum_{j=1}^i {\binom ij} f_j\] , 则有 \[ f_i=\sum_{j=1}^i (-1)^{i-j} {i \ch ...
随机推荐
- Echars 参数说明
theme = { // 全图默认背景 // backgroundColor: 'rgba(0,0,0,0)', // 默认色板 color: ['#ff7f50','#87cefa','#da70d ...
- 单应用模式 - Layuiadmin单页版放入TP6.0的部署方案
thinkphp6.0.3单应用模式.layuiadmin1.4.0单页版,不需要tp的视图驱动 1. 复制 src.start 两个文件夹 2. 粘贴到 thinkphp 的 public 目录下 ...
- flutter dio网络请求封装实现
flutter dio网络请求封装实现 文章友情链接: https://juejin.im/post/6844904098643312648 在Flutter项目中使用网络请求的方式大致可分为两种 ...
- 将虚拟机IP与主机IP设置在同一网段的方法
一.查看主机的网卡名称.IP地址.子网掩码 二.设置VMware Workstation软件 打开虚拟网络编辑器 弹出对话框,选择"更改设置"按钮. 进入虚拟网络编辑器 单选项选择 ...
- oracle之二检查点
检查点(checkpoint) 8.1 什么是checkpointcheckpoint是数据库的一个内部事件,检查点激活时会触发数据库写进程(DBWR),将数据缓冲区里的脏数据块写到数据文件中. 8. ...
- pytest文档3-pytest+Allure+jenkins+邮箱发送
前言: 虽然网上有很多邮件配置的文章,但还是想自己写一下配置的过程,因为在中间也碰到了不同坑.按照这个文档配置的话,99%都可以成功. 一.jenkins 配置邮箱 1.打开jenkins后进入点 ...
- 知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一
简介 模块化的介绍一共2篇 这一篇我们实现一个功能非常简单的StartupModules模块化. 第二篇我们来实现一个ABP的模块化效果. 思考 其实来简单想一下模块化的实验思路,写个接口=>模 ...
- Map遍历法则
/** * 如果既要遍历key又要value,那么建议这种方式,应为如果先获取keySet然后再执行map.get(key),map内部会执行两次遍历. * 一次是在获取keySet的时候,一次是在遍 ...
- C++实现职工管理系统(下)
C++实现职工管理系统(下) 大家好,今天是在博客园的第十五天,博主今天给大家带来的是职工管理系统(C++)(下) 这次的随笔记录是实现(中)结语处说的几个功能,另外新增一个修改功能 此次要实现的功能 ...
- 简述application.properties和application.yml 以及 @ConfigurationProperties 和@PropertySource @Value 和@ImportResource的用法,区别
问题: 如何在application.properties和application.yml中配置String,Date,Object,Map,List类型的属性,并且idea能提示 先写一个Perso ...