首页 > 其他分享 >Min-Max容斥

Min-Max容斥

时间:2023-03-01 14:58:50浏览次数:41  
标签:期望 Min Max sum 容斥 dp

一个逆天的容斥。

形式非常简单:

\[\max_{i\in S}i=\sum_{T\subseteq S}(-1)^{|T|+1}\min_{i\in T}i \]

其中 \(S\) 是你要求最大值的集合。

这个东西有什么用呢?显然一般题是完全不需要这个逆天玩意的。

但是这个容斥对于期望成立。所以一些形似求覆盖的期望用时的题就需要用到这个东西。

例题:P3175

这个东西就是一眼 Min-Max 容斥。因为他要求期望所有位都变成 \(1\) 的时间,而这个时间看的是最晚变成 \(1\) 的一位变成 \(1\) 的期望,也就是最大值。加上奇怪的求期望,显然只能 Min-Max。

设 \(f_S\) 表示 \(S\) 中至少有一位被覆盖的最小期望时间,形式化地,就是 \(f_S = \min_{i\in S}E(t_i)\),其中 \(E(t_i)\) 就是第 \(i\) 位被覆盖的期望时间。

那么显然答案就是 \(\sum_{T\subseteq S}(-1)^{|T|+1}f_T\),而 \(f_T\) 的求法也相当简单,只需看与 \(T\) 有交集的所有数的选中概率 \(p\),然后 \(f_T = \frac{1}{p}\)。求 \(p\) 可以转成所有与 \(T\) 不交的概率之和,也就是 \(T\) 在全集 \(S\) 中的补集的全部子集的概率之和。这可以高维前缀和或 FWT 解决。

record

例题2:zr 23省选十连 day6 T1

依旧是一眼 Min-Max 容斥。设 \(g_i\) 表示恰好有 \(i\) 个区间覆盖选定位置集合 \(T\) 中至少一个位置的 集合的 \(\sum (-1)^{|T|+1}\),则显然答案就是 \(\sum_i g_i \times \frac{m}{i}\)。

那么显然 \(n^3\) 的暴力 dp 是显然的。只需设 \(f_{i,j}\) 表示上一个位置选定的是 \(i\),一共有 \(j\) 个集合覆盖至少一个选定位置的答案,那么只需枚举下一个位置是什么,设 \(l\) 是所有左端点在 \((i,k]\),右端点在 \([k,INF]\) 的个数,则 \(f_{k,j+l}\leftarrow f_{i,j}\)。

优化的话是把 \(g_i\) 的定义改成没有覆盖任何位置集合中的位置的区间个数为 \(i\) 的答案,设 \(dp_{i,j}\) 就是上一个钦定的是 \(i\),右端点在 \([1,i]\) 的有 \(j\) 个没有任何覆盖的答案。

然后用线段树维护前面每一个 \(dp_j\) 对当前 \(dp_{i+1}\) 的贡献系数。

那么只需挨个加入每一个右端点是 \(i+1\) 的区间,考虑这个区间 \([j,i+1]\) 对前面 \(k\in [0,j)\) 的所有 \(dp_k\) 都导致了一个右移,于是线段树即可维护。

标签:期望,Min,Max,sum,容斥,dp
From: https://www.cnblogs.com/infinities/p/17168126.html

相关文章

  • cmake错误:CMake Error: CMake can not determine linker language for target
    解决方案:因为你的library只有头文件,没有cpp文件在add_library中增加cpp文件同时建立一个空的cpp文件即可。处理后的源代码结构和CMakeLists.txt内容如下所示:其中,math.c......
  • 华硕 TUF GAMING FX504GE_FX80GE电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板华硕FX504GE(HM370芯片组)处理器英特尔Corei5-8300H@2.30GHz四核已驱动内存16GBLPDDR4X3200MHz已驱动硬盘金士顿512G已驱动显卡IntelUHD630+N......
  • TweenMax学习笔记整理
    因为要做一个案例,里面用到了很多动画,TweenMax真的是一个很强大的动画库,所以就学了一点里面的方法,现在整理出来官网​​:https://greensock.com/tweenmax​​注意:这个动画库是......
  • 对于如何在IDEA中给Terminal添加git的详解
    具体步骤1、配置本机环境变量进入到环境变量的设置界面,然后找到下面的Path变量,双击点开;然后新建一个变量,路径定义到git的目录下面的bin目录下;2、WIN+R,然后输入cmd,进入......
  • KingbaseES 中的xmin,xmax等系统字段说明
    在KingbaseES中,当我们创建一个数据表时,数据库会隐式增加几个系统字段。这些字段由系统进行维护,用户一般不会感知它们的存在。例如,以下语句创建了一个简单的表:createtabl......
  • minio docker 搭建命令
    dockerrun--name=minio-test\ -d\-p19000:9000-p19001:9001\-v/home/cl/minio:/data\-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWO......
  • 用户手册:遥测服务之推送至 MinIO
    创建TelemetryServiceYaml文件#telemetry_service.yamlapiVersion:shifu.edgenesis.io/v1alpha1kind:TelemetryServicemetadata:name:push-file-mp4namespace:dev......
  • 什么是MinIO
    什么是MinIO?MinIO是一款高性能、分布式的对象存储系统.它是一款软件产品,可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。MinIO提供高性能、S3......
  • php laravel artisan nxos:install Error Call to undefined function Illumina
    命令/www/server/php/81/bin/phpartisannxos:install错误信息ErrorCalltoundefinedfunctionIlluminate\Filesystem\symlink()atvendor/laravel/frame......
  • 容斥原理
    容斥原理在1到100的整数中,我们想数出“既不是2的倍数,也不是3的倍数,也不是5的倍数”的数的个数。我们发现,我们很容易数出2的倍数的个数、3的倍数的个数、5的倍数的个数,但是......