首页 > 其他分享 >容斥与反演技巧(三)

容斥与反演技巧(三)

时间:2023-05-12 15:46:14浏览次数:35  
标签:mathbb 技巧 min text sum 容斥 反演 max binom

Min-Max 容斥

简单来说,由于 \(\mathbb E[\max(x,y)]\neq \max(\mathbb E[x],\mathbb E[y])\),而如果计算 \(\mathbb E[\min(x,y)]\) 比计算 \(\mathbb E[\max(x,y)]\) 容易得多,我们就通常使用 min-max 容斥转为计算 \(\mathbb E[\min(x,y)]\)。

对于上面这种 \(x,y\) 的情况,实际上只需要注意到 \(\max(x,y)=x+y-\min(x,y)\),就有

\[\mathbb E[\max(x,y)]=\mathbb E[x]+\mathbb E[y]-\mathbb E[\min(x,y)] \]

上面这一步只利用了期望的线性性,因此是正确的。对于多元的情况,我们有

\[\max(S)=\sum_{T\neq \varnothing,T\subseteq S}(-1)^{|T|+1}\min(T) \]

这个式子怎么来的呢,其实就是利用二项式反演 \([n=0]=\sum_{i=0}^n(-1)^i\binom{n}{i}\)(或者说是 \([S=\varnothing]=\sum_{T\subseteq S}(-1)^{|T|}\)),考虑将 \(S\) 中元素从大到小排列后第 \(i\) 个元素的系数,发现他就是

\[\sum_{S\subseteq \{1,2,\cdots,i-1\}}(-1)^{|S|}=[\{1,2,\cdots,i-1\}=\varnothing]=[i=0] \]

因此自然有 \(\max(S)=\sum_{T\neq \varnothing,T\subseteq S}(-1)^{|T|+1}\min(T)\)。换成 \(\min\) 也同理。

如果要算第 \(k\) 大即 \(\max_k(S)\),只需注意到

\[[n=k-1]=[n-k+1=0]=\sum_{i=0}^{n-k+1}\binom{n-k+1}{i}(-1)^i=\sum_{i=k-1}^{n}\binom{n-k+1}{i-k+1}(-1)^{i-k+1} \]

然后想一下我们应该怎么构造这个式子。显然 \(T\) 那边应该给一个系数 \((-1)^{|T|-k+2}=(-1)^{|T|+k}\),但是如果直接算的话系数会变成 \(\binom{n}{i}\) 而非 \(\binom{n-k+1}{i-k+1}\),因此我们需要乘上一个

\[\dfrac{\binom{n-k+1}{i-k+1}}{\binom{n}{i}}=\dfrac{\binom{i}{i-k+1}}{\binom{n}{n-k+1}} \]

你发现由于 \(n>k-1\) 的时候这东西都是 \(0\) 所以分母没有意义;\(n=k-1\) 的时候分母是 \(1\) 也没有意义,因此不妨直接去掉分母,就有

\[\max\nolimits_k(S)=\sum_{|T|\ge k,T\subseteq S}\binom{|T|-1}{|T|-k}(-1)^{|T|+k}\min(T) \]

对于 \(\min_k\) 也一样。注意到 \(|T|<k\) 时 \(\binom{|T|-1}{|T|-k}\) 就是 \(0\),因此求和条件中的 \(|T|\ge k\) 可以去掉。只不过此时需要认为 \(\min(\varnothing)=0\),或者限定 \(T\neq\varnothing\)。

HDU4336

显然可以状压 DP 做到 \(O(n2^n)\)。

考虑 min-max 容斥:\(t_i\) 表示 \(i\) 第一次出现的时间(这是一个随机变量),则所求即为

\[\mathbb E[\max(t_1,t_2,\cdots,t_n)]=\sum_{T\neq \varnothing}\mathbb E[\min_{x\in T}t_x] \]

注意到 \(\mathbb E[\min_{x\in T}t_x]\) 可以看作每秒有 \(\sum_{x\in T}p_x\) 的概率命中,问首次命中的期望时间。

显然,这就是 \(\frac{1}{\sum_{x\in T}p_x}\)。因此答案就是

\[\sum_{T\neq \varnothing}\dfrac{(-1)^{|T|+1}}{\sum_{x\in T}p_x} \]

可以做到 \(O(2^n)\)。貌似并没有很大提升orz

LOJ2127

设 \(t_i\) 表示期望意义下第一次 \(i\in S\) 的时间,考虑怎么算 \(E[\min_{x\in T}t_x]\)。

发现这就是 \(\dfrac{1}{\sum_{T\cap C\neq \varnothing}p[C]}\),FWT 预处理高维前缀和即可。时间复杂度 \(O(n2^n)\)。

Luogu4707

设 \(t_i\) 为收集到 \(i\) 的期望时间,所求即 \(E[\min_k\{t_i|i=1,2,\cdots,n\}]\)。

注意到 \(n-k\le 10\),我们不妨取新的 \(k\leftarrow n-k+1\),然后求 kthmax 的期望,且 \(1\le k\le 11\)。

套用 minmax 容斥的式子:

\[\mathbb E[\max\nolimits_k(S)]=\sum_{T\subseteq S}\binom{|T|-1}{k-1}(-1)^{|T|+k}\min(T) \]

考虑 \(\mathbb E[\text{min}(T)]\),发现他就是 \(\frac{m}{\sum_{x\in T}p_x}\)。因此上式即

\[\sum_{T}\binom{|T|-1}{k-1}(-1)^{|T|+k}\dfrac{m}{\sum_{x\in T}p_x} \]

注意到 \(\sum p_x=m\le 10^4\),考虑枚举 \(\sum p_i\)。记 \(\text{sum}(T)=\sum_{x\in T}p_x\)

\[\sum_{i=0}^m\frac{ m}{i}\sum_{\text{sum}(T)=i}\binom{|T|-1}{k-1}(-1)^{|T|+k} \]

现在只需要算出后面那一项。发现这只和 \(|T|\) 有关,并且带了一个下降幂,考虑设计

\[f(i,j,k)=\sum_{\text{sum}(T)=j,T\subseteq[i]}\binom{|T|-1}{k-1}(-1)^{|T|+k} \]

考虑转移,如果选了当前的 \(p_i\),当 \(k>1\) 时,原来的 \(\binom{|T|-1}{k-1}(-1)^{|T|+k}\) 会变为

\[\binom{|T|}{k-1}(-1)^{|T|+k+1}=-\binom{|T|-1}{k-1}(-1)^{|T|+k}+\binom{|T|-1}{k-2}(-1)^{|T|+k-1} \]

而当 \(k=1\) 时,相当于只添了一个负号,因此有

\[f(i,j,k)=\begin{cases}f(i-1,j,k)-f(i-1,j-p_i,k)+f(i-1,j-p_i,k-1)&,k>1\\f(i-1,j,k)-f(i-1,j-p_i,k)&,k=1\end{cases} \]

边界条件应当为 \(f(0,0,k)=\binom{-1}{k-1}(-1)^{0+k}=-1\)。答案即为 \(\sum \frac{m}{j}f(n,j,k)\)。

时间复杂度 \(O(nmk)\)。

ABC242Ex

设 \(t_i\) 表示 \(i\) 第一次被染色的时间,则答案为 \(E[\max\{t_i\}]\)。套路地进行 min-max 容斥,有

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

考虑怎么算 \(E[\min_{i\in T}t_i]\),发现如果能算出与 \(T\) 有交的区间 \([L_i,R_i]\) 个数 \(x\),那么相当于每次有 \(\frac{x}{m}\) 的概率命中,一旦命中就立即结束;因此有 \(E[\min(T)]=\frac{m}{x}\)。记这个 \(x\) 是 \(f(T)\)。

提前把 \([L_i,R_i]\) 二维前缀和一手,设 \(\text{dp}(i,j)\) 表示从前 \(i\) 个数中选子集,且必须选 \(i\),且 \(f(T)=j\) 的方案数,然后枚举上一个选的位置直接 DP 就是 \(O(n^2m)\) 的,可以通过。

ABC242F

做了这么多 minmax 容斥来道简单题换换心情

不难发现,只需要算出 \(f(i,j),g(i,j)\) 表示在 \(i\) 行 \(j\) 列中放黑白棋子使得每行每列至少一个的方案数。

答案就是

\[\sum_{x_1+x_2\le N,y_1+y_2\le M}f(x_1,y_1)g(x_2,y_2)\binom{N}{x_1\quad x_2\quad N-x_1-x_2}\binom{M}{y_1\quad y_2\quad M-y_1-y_2} \]

易知

\[f(i,j)=\sum_{0\le x\le i,0\le y\le j}(-1)^{x+y}\binom{i}{x}\binom{j}{y}\binom{(i-x)(j-y)}{B} \]

预处理组合数即可。复杂度 \(O(N^2M^2)\)。模数可以不是质数的

LOJ2542

设 \(t_i\) 表示第一次走到 \(i\) 的时间,直接套 min-max 容斥,考虑咋算 \(\min(S)\)。

发现相当于删掉 \(S\) 以内的点,然后算第一次走出这个连通块的期望步数。

可以直接高斯消元然后 FMT 一手做到 \(O(n^32^n)\)。

考虑使用树上高消,\(f_u\) 表示从 \(u\) 开始走,第一次走出去期望要走多少步。那么有

\[f_u=\dfrac{1}{d_u}\left(f_{\text{fa}(u)}+\sum_{v\in\text{son}(u)}f_v\right)+1=1+\dfrac{1}{d_u}f_{\text{fa}(u)}+\dfrac{1}{d_u}\sum_{v\in\text{son}(u)}f_v \]

其中 \(d_u\) 表示点 \(u\) 的度数,包括父亲。

我们考虑把 \(f_u\) 写成 \(A_u\times f_{\text{fa}(u)}+B_u\) 的形式,那么有

\[f_u=1+\dfrac{1}{d_u}f_{\text{fa(u)}}+\dfrac{1}{d_u}\sum_{v\in \text{son}(u)}A_v\times f_u+B_v\qquad\qquad(u\neq \text{root}) \]

移项有

\[\left(1-\dfrac{\sum_{v\in\text{son}(u)}A_v}{d_u}\right)f_u=1+\dfrac{1}{d_u}f_{\text{fa}(u)}+\dfrac{\sum_{v\in \text{son}(u)}B_v}{d_u}\qquad\qquad(u\neq \text{root})\\ f_u=\dfrac{d_u+f_{\text{fa}(u)}+\sum_{v\in \text{son}(u)}B_v}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root})\\ \]

整理得

\[A_u=\dfrac{1}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root})\\ B_u=\dfrac{d_u+\sum_{v\in\text{son}(u)}B_v}{d_u-\sum_{v\in\text{son}(u)}A_v}\qquad\qquad(u\neq \text{root}) \]

最后考虑根节点,有

\[f_{\text{root}}=1+\dfrac{1}{d_\text{root}}\sum_{v\in \text{son}(u)}f_v=1+\dfrac{1}{d_\text{root}}\sum_{v\in \text{son}(u)}A_v\times f_{\text{root}}+B_v\\\iff f_{\text{root}}=\dfrac{d_{\text{root}}+\sum_{v\in\text{son}(u)}B_v}{d_{\text{root}}-\sum_{v\in\text{son}(u)}A_v} \]

再自顶向下根据 \(A,B\) 即可解的每个点的 \(f\) 值。总时间复杂度 \(O(n2^n\log P+Q)\)。

PKUSC2023 D1T2

有 \(n\) 个人在玩狼人杀,其中第 \(m\) 个是狼人。在剩下的 \(n-1\) 个人中等概率随机一个人作为预言家,预言家每次会随机选择一个区间 \([l,r]\)(即每个区间 \(\frac{2}{n(n+1)}\) 的概率),他可以知道狼人是否在这个区间内。问期望意义下预言家期望多少步能确定谁是狼人。

具体来说,如果预言家是 \(i\),那么对他而言的初始“候选狼人集合”为 \([1,i)\cup (i,n]\),如果他询问了 \([l,r]\),此时若狼人在 \([l,r]\) 内,则候选狼人集合由 \(S\leftarrow S\cap [l,r]\);否则 \(S\leftarrow S\cap([1,n]-[l,r])\)。该预言家找到狼人的期望步数就是 \(|S|\) 第一次变成 \(1\) 的期望步数。对某个质数取模。

数据范围:\(2\le n\le 150,1\le m\le n\)。

设 \(t_i\) 表示 \(i\) 第一次被排除的时间,其中 \(i\neq m\),那么就是要对每个 \(x\) 求 \(\mathbb E[\max_{i\neq x} t_i]\)。

考虑 \(\mathbb E[\min_{i\in S} t_i]\) 咋算,发现要使 \(S\) 中一个元素都不能被排除,需要有:

  • 若区间包含了 \(m\),那么区间必须包含 \(S\) 中的所有数。
  • 若区间没有包含 \(m\),那么区间必须不包含 \(S\) 中的任意数。

满足这个条件的区间个数如果是 \(x\),那么期望就是 \(\frac{C_{n}^2}{C_n^2-x}\)。

设 \(\min(S)=x,\max(S)=y\),那么第一种区间只需要满足 \(l\le \min(x,m),r\ge \max(y,m)\)。

考虑第二种区间怎么算,发现可以做个 DP 在 \(O(n^4)\) 内算出 \(f(i,j)\) 表示 \(i\) 个位置选子集,最后空出来 \(j\) 个区间的方案数。然后考虑 \(m\) 这个位置,发现只要转移的时候特殊处理一下即可。从每个位置开始做 DP 可以做到 \(O(n^5)\)。对于预言家的问题,只需要在状态中记录 \(0/1\) 即可。

然后考虑优化,发现可以不枚举开头,改为按 \(m\to n\to 1\to n-1\) 做 DP,经过 \(n\) 的时候特殊算区间个数。然后就不需要枚举开头了,复杂度 \(O(n^4)\)。

标签:mathbb,技巧,min,text,sum,容斥,反演,max,binom
From: https://www.cnblogs.com/YunQianQwQ/p/17394330.html

相关文章

  • 阅读论文的方法和技巧(快速且有效)
    如何从一个小白快速开始入手看论文,然后看论文,发论文。请仔细看下面的讲解。欢迎大家一起交流和补充。阅读论文的方法和技巧一.阅读论文五个重要步骤(通常用时30-60分钟)1.第一遍是快速浏览论文的摘要、结论、框架图,有助于把握核心,对论文的内容形成整体感知。(5-10分钟)当然,这......
  • 莫比乌斯反演常见的三个模型
    莫比乌斯反演常见模型模型1:\(\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=t]\)\[\begin{aligned}\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=t]&=\sum_{i=1}^{\lfloor\frac{n}{t}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{t}\rfloor}[gcd(i,j)=1]\\&=\sum_{i=1}^{\lfloor\f......
  • 178_技巧_Power BI 动态排名多项展示
    178_技巧_PowerBI动态排名多项展示一、背景在PowerBI中做排名矩阵时,我们经常遇到同一维度下,多项展示排名的问题。类似这样的排名矩阵,排名的名次不会太多,但是同一维度下会有多项同时展示排名,并且还要满足切片时能动态的变化。PowerBI公共web效果:https://demo.jiaopengz......
  • 莫比乌斯反演学习笔记(内涵反演详细推导和证明!)
    莫比乌斯反演前言记得上次学这个东西已经是一年前了,题到没有做过几道……一些有趣的东西莫比乌斯这个人还是很nb的,相信大家都听说过莫比乌斯带,就是他发现的,跟所有数学大佬一样的,他还喜欢天文学和物理废话不扯多了前置知识整除分块一个在数论计算中异常常见的东西,一般和......
  • 使用Ansible实现自动化运维的一些技巧
     提示:本文要求读者有一定的Ansible使用经验   最近一年才有机会在生产环境上使用Ansible。用的过程中,想把一些小技巧记录下来,避免自己忘记。如果能帮助到其他同学就更好了。如果有同学指出有更好的方法,就更更好了。技巧1:校验你的模板文件是否正确通常我们会使用t......
  • python 小技巧, 如何找到多个字典中的公共键(key)
    ......
  • 玩转 Tomcat 配置必备的 10 个小技巧!
    本文预计阅读时间较长,建议收藏慢慢看哦 现在开发JavaWeb应用,建立和部署Web内容是一件很简单的工作。使用JakartaTomcat作为Servlet和JSP容器的人已经遍及全世界。Tomcat具有免费、跨平台等诸多特性,并且更新得很快,现在非常的流行。 你所需要做的就是:按照你的需求配置Tomcat,......
  • 编程技巧
    一接口和面向接口编程1用ts编写基于interface的命令模式编写用户界面程序,页面有成百上千个子菜单约定基于命令模式编写负责子菜单的同事完成编程之后会将子菜单封装成一个命令对象,将其交给编写菜单集合界面的同事约定:调用子菜单的execute方法时会执行对应子菜单......
  • 免费享用ChatGPT4.0小技巧,构思方式新颖巧妙,可借鉴,独家分享
    文/高扬(微信公众号:量子论) 现在大家免费使用的ChatGPT都是GPT-3.5版本,可是我就想使用GPT-4版本怎么办,而且我还不想购买OpenAI的Plus会员…… 我是这样考虑的,作为大语言模型,我们并不知道GPT-3.5和GPT-4是不是同一个模型。 不如我们先猜测它们归属同一种模型,只是OpenAI的......
  • python 小技巧, 列表生成式比 filter(lambda x:x>=0,data) 快, iteritems()方法,
    题目经timeit测试列表生成式比filter(lambdax:x>=0,data)快python2的dict的iteritems()方法,pyhton3可以看看有没有......