首页 > 其他 > 详细

min-max容斥学习笔记

时间:2019-02-03 15:17:02      阅读:131      评论:0      收藏:0      [点我收藏+]

用途

给出集合\(S?\),可以通过某种奇特的方式将最小值和最大值互相转化,甚至转化为\(k?\)大值。

更为有用的是,它在期望意义下也是正确的。


普通形式

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

证明和作用不再赘述,网上大把。


拓展

\(min-max\)容斥不只可以搞出最值,甚至可以搞出\(k\)大值。

推导过程

受上面的启发,我们仍然考虑一个容斥:

\[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}f(|T|) min(T) \]

其中\(f(x)\)是一个未知的函数,我们需要将其构造出来。

对于一个排名为\(x\)的元素(即第\(n-x+1\)大),它对答案的贡献系数是这样一个东西:

\[ \sum_{i=0}^{n-x} {n-x \choose i} f(i+1) \]

我们令

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

得到

\[ \begin{align*} [a=k-1]&=\sum_{i=0}^a {a \choose i} f(i+1)\\end{align*} \]

由二项式反演,得

\[ \begin{align*} f(m+1)&=\sum_{i=0}^m {m \choose i} (-1)^{m-i}[i=k-1]\&={m \choose k-1} (-1)^{m-k+1}\\end{align*}\\therefore f(m)={m-1\choose k-1} (-1)^{m-k} \]

于是我们有

\[ kthmax(S)=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T|-k} min(T) \]

更好的是,这个式子在期望意义下仍然成立,即

\[ E(kthmax(S))=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T|-k} E(min(T)) \]

(然而我并不会证明……)

作用

考虑这样一道题:

有一些物品\(a_i\)。在每个时刻,\(a_i\)出现的概率为\(p_i\),其中\(\sum_i p_i=1\)。每个时刻会且仅会出现一个物品,问期望多久时间能收集到\(k\)个不同的物品。\(n\leq 20\)

对于一个集合\(S=\{a_{t_i}|1\leq i \leq m\}\),定义\(min(S)\)\(S\)中最早出现的物品出现的时间,\(max,kthmax\)同理,就可以套用上面的式子:

\[ E(kthmax(S))=\sum_{\varnothing\neq T\subseteq S}{|T|-1\choose k-1} (-1)^{|T|-k} E(min(T)) \]

其中$E(min(T))=\frac{1}{\sum p_{t_i}} $。

于是我们预处理阶乘、\(E(min(T))\),然后大力枚举\(T\),就可以在\(O(2^n)\)的时间内得到答案了。(可能有更快的做法?懒得想了)


例题

洛谷P3175 [HAOI2015]按位或

洛谷P4707 重返现世

min-max容斥学习笔记

原文:https://www.cnblogs.com/p-b-p-b/p/10350374.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!