题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = \sum\limits_{T \subseteq S} (-1)^{|T| + 1}E(min\{T\})\] 那么问题就转化为了求每个集合中最早出现的\(1\)的期望时间 假如在\(k\)时刻出现,那么前\(k - 1\)时刻一定都是取的补集的子集,记\(T\)补集的所有子集概率和为\(P\) \…
传送门 套路题 看到\(n \leq 20\),又看到我们求的是最后出现的位置出现的时间的期望,也就是集合中最大值的期望,考虑min-max容斥. 由\(E(max(S)) = \sum\limits_{T \subset S} (-1)^{|T| + 1} E(min(T))\),我们要求的就是一个集合至少有一个数字出现的期望时间.那么\(E(min(T)) = \frac{1}{\sum\limits_{S' \cap T \neq \emptyset} p_{S'}}\). \(\sum\…
[luogu 3175] [HAOI2015]按位或 题面 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行按位或运算.问期望多少秒后,你手上的数字变成2^n-1. 分析 前置知识:min-max容斥 记\(\max(S)\)为集合\(S\)中的最大值,\(\min(S)\)为集合\(S\)中的最小值(如果\(S=\emptyset\) ,那\(\max(S)=\min(S)=0\)),那么有 \[\max(S)=\sum _{T\subseteq S}…
考虑min-max容斥 \(E[max(S)] = \sum \limits_{T \subset S} min(T)\) \(min(T)\)是可以被表示出来 即所有与\(T\)有交集的数的概率的和的倒数 通过转化一下,可以考虑求所有与\(T\)没有交集的数的概率和 即求\(T\)的补集的子集的概率和 用FMT随意做下吧... 注意:概率为1的时候需要特判 复杂度\(O(2^n * n)\) #include <cstdio> #include <vector> #include…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4036 题解:https://www.cnblogs.com/Zinn/p/10260126.html #include<cstdio> #include<cstring> #include<algorithm> #define db double using namespace std; ,M=(<<)+; int n,bin[N],lm,ct[M];…
[BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的期望,\(min\)同理. 那么\(E(max\{S\})=\sum_{T\subseteq S}(-1)^{|T|}E(min\{T\})\) 考虑怎么求\(E(min\{T\})\),很容易发现只需要或上了任何一位就行了. 也就是 \[E(min\{T\})=\frac{1}{\sum_{G\c…
LINK:小Z的礼物 太精髓了 我重学了一遍min-max容斥 重写了一遍按位或才写这道题的. 还是期望多少时间可以全部集齐. 相当于求出 \(E(max(S))\)表示最后一个出现的期望时间. 根据min-max容斥 显然有 \(E(max(S))=\sum_{T\subseteq S}(-1)^{|T|+1}E(min(T))\) 对于这道题 要求出所有的T 直接\(2^{cnt}\)枚举不太现实. 但是我们仍要对每个集合求出其概率. 考虑从矩阵上进行dp来进行压缩状态 那么因为一个格子的选…
题意 题目链接 Sol 考虑直接对询问的集合做MinMax容斥 设\(f[i][sta]\)表示从\(i\)到集合\(sta\)中任意一点的最小期望步数 按照树上高斯消元的套路,我们可以把转移写成\(f[x] = a_x f[fa] + b_x\)的形式 然后直接推就可以了 更详细的题解 #include<bits/stdc++.h> #define LL long long using namespace std; const int MAXN = 1e6 + 10, mod = 99824…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4036 min-max容斥:https://blog.csdn.net/ez_2016gdgzoi471/article/details/81416333 二项式反演:https://blog.csdn.net/ez_2016gdgzoi471/article/details/81408416 而出现 \( S \) 的期望,就是 \( S \) 每一位出现的期望中的最大值: 所以 \( E…
题目链接:洛谷 题目大意:给定正整数 $n$.一开始有一个数字 $0$,然后每一秒,都有 $p_i$ 的概率获得 $i$ 这个数 $(0\le i< 2^n)$.一秒恰好会获得一个数.每获得一个数,就要将我们有的数与获得的数进行按位或.问期望经过多少秒后,我们的数变成 $2^n-1$. $1\le n\le 20,\sum p_i=1$. %%%stO shadowice1984 Orz%%% 首先定义 $\min(S)$ 表示 $S$ 中第一个变为 $1$ 的元素的时间.(其中 $S$ 是一个…
容斥原理的思想大家都应该挺熟悉的,然后补集转化其实就是容斥原理的一种应用. 一篇讲容斥的博文https://www.cnblogs.com/gzy-cjoier/p/9686787.html 当我们遇到正面解决很困难的问题,我们可以考虑从它的反面去思考,如果反面容易计算的话那么我们就可以用补集转化的思想先计算反面再计算正面(尤其是计数类问题). Min-Max容斥是一个十分有用的定理,尤其是在计算概率期望上有 一般来说:这里的Emax(S)是代表出现S所有元素的期望,Emin(T)是出现T任何一…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4036 题解 变成 \(2^n-1\) 的意思显然就是每一个数位都出现了. 那么通过 MinMax 容斥,可以把问题转化为对于一个集合 \(S\),求 \(S\) 中至少有一个元素出现的概率. 这个问题等价于求 \(S\) 中没有任何一个元素出现的概率,即出现的数都是 \(S\) 的补集的子集的概率. 这个问可以通过 SoSDP 实现,时间复杂度 \(O(n2^n)\). 关于 SoSDP 这…
其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s),max(s)分别表示集合s里最早和最晚出现的元素,显然E(amx(全集))就是答案 然后有这样的式子: \[ E(max(s))=\sum_{s'\in s}E(min(s'))*(-1)^{|s'|+1} \] \[ E(min(s))=\frac{1}{\sum_{s'\cap s!=\ph…
考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间.求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]. 考虑怎么求P[S].P[S]=∑p[s] (s&S>0)=1-∑p[s] (s&S==0).做一个高维前缀和即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib>…
传送门 那么除了D1T3,PKUWC2018就更完了(斗地主这种全场0分的题怎么会做啊) 发现我们要求的是所有点中到达时间的最大值的期望,\(n\)又很小,考虑min-max容斥 那么我们要求从\(x\)走到第一个属于某个子集\(S\)的节点的步数期望,这是一个经典的树上高斯消元问题. 将树设为以\(x\)为根,设\(f_{i , S}\)为从第\(i\)个点随机游走到达点集\(S\)任意一个点停止,行走步数的期望,转移: \(1.i \in S: f_{i , S}=0\) \(2.i \no…
搞了一下午 真的是啥都不会 首先这道题要用到Min-Max容斥 得到的结论是 设 $Max(S)$表示集合里最晚被访问的节点被访问的期望步数 设 $Min(S)$表示集合里最早被访问的节点被访问的期望步数 那么$ Max(S) = ∑_{T \in S} {-1^ { \lvert T \rvert+1} }Min(T)$ (这个相关的证明和理解可以看看HDU4336 附一个题解) 考虑对于一个集合$S$如何计算$Min(S)$ 记$d_u$为点$u$的度数 当$u\notin S \space…
题意 题目链接 \(N\)个物品,每次得到第\(i\)个物品的概率为\(p_i\),而且有可能什么也得不到,问期望多少次能收集到全部\(N\)个物品 Sol 最直观的做法是直接状压,设\(f[sta]\)表示已经获得了\(sta\)这个集合里的所有元素,距离全拿满的期望,推一推式子直接转移就好了 主程序代码: int N; double a[MAXN], f[MAXN]; signed main() { // freopen("a.in", "r", stdin);…
In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award. As a smart boy, you notice that to win t…
Card Collector(期望+min-max容斥) Card Collector woc居然在毫不知情的情况下写出一个min-max容斥 题意 买一包方便面有几率附赠一张卡,有\(n\)种卡,每种卡出现的概率是\(p_i\),保证\(\Sigma p_i \le 1\),集齐所有种类卡牌期望买多少包方便面? 解法 看次题解前,你必须要理解当只有一种卡,他出现的概率是\(p\),那么我期望购买$\frac 1 p $包方便面就可以获得这种卡. 否则请你右上角,因为博主不会解释... 唯一的解…
9个月的心头大恨终于切掉了!!!! 非常好的一道题,不知为何uoj上被点了70个差评. 题目链接: http://uoj.ac/problem/214 题目大意: 请自行阅读. 题解: 官方题解讲得相当清楚,这里补充一下自己的一些理解. 首先来看\(O(2^{n-m}\times poly(n,m))\)的做法. 一种理解方式是官方题解. 设\(s\)为总共的课程个数(\(n\)个字符串的总长度),\(p(S)\)表示结尾位置为集合\(S\)的串全部匹配一共需要完成多少个不同的课程.设\(f(t…
很好很有趣很神仙的题! 题目链接: https://loj.ac/problem/2542 题意: 请自行阅读 题解首先我们显然要求的是几个随机变量的最大值的期望(不是期望的最大值),然后这玩意很难求,根据Min-Max容斥化成最小值的期望来求. Minn-max容斥是指\(\max(x_1,x_2,...,x_n)=\sum_{S\in \{1,2,...,n\} } (-1)^{|S|-1} \min_{i\in S}(x_i)\) (所有元素都是正整数,这个尽管式子本身和期望没关系但是经常…
Description: 刚开始你有一个数字0,每一秒钟你会随机选择一个$[0,2^n)$的数字,与你手上的数字进行或(C++, C 的 |, Pascal 的 or)操作. 选择数字i的概率是$p_i$ (保证$p \le p_i \le 1$,$\sum p_i =1$ )问期望多少秒后,你手上的数字变成$2^n-1$.($n \le 20$) 日常:想->问NC大聚聚这题有什么新知识点->学知识点->做->调... 全是新知识点,难度也都不低.一个知识点一道题也不知道自己是不…
UOJ 思路 由于最近养成的不写代码的习惯(其实就是懒),以下式子不保证正确性. 上来我们先甩一个min-max容斥.由于每只鸽子是一样的,这只贡献了\(O(n)\)的复杂度. 现在的问题转化为对于\(n\)只鸽子里面的\(c\)只鸽子,求喂饱其中一只鸽子的期望时间. 我们对期望的式子差分一下,变成统计经过\(i\)秒之后\(c\)只鸽子仍然一只都没有被喂饱的概率. 枚举这\(i\)秒里面有\(s\)秒喂到了,设\(f_{c,s}\)表示给\(c\)只鸽子喂了\(s\)粒玉米,一只都没有饱的概率…
正题 题目链接:https://www.luogu.com.cn/problem/P3175 题目大意 开始有一个\(n\)位二进制数\(s=0\),每次有\(p_i\)概率选取数字\(i\)让\(s\)或上这个数字\(i\),求期望多少次能够让\(s\)的\(n\)个位都变为\(1\). 解题思路 因为是或所以我们只关心最后一个选中的数,设第\(i\)位选中的期望次数为\(E(i)\)的话答案就是\(max\{E(i)\}\). 又是期望又是\(max\)所以可以直接上\(\text{min-…
正题 题目链接:https://www.luogu.com.cn/problem/P4707 题目大意 \(n\)个物品,每次生成一种物品,第\(i\)个被生成的概率是\(\frac{p_i}{m}\),求生成至少\(k\)种物品的期望次数. \(1\leq n\leq 1000,max\{n-10,1\}\leq k\leq n,1\leq m\leq 10000\) 解题思路 求的是\(E(min_k\{S\})\),但是\(k\)很大,如果令\(k=n-k+1\)的话就是求\(E(max_…
基本形式 \[ \max(S) = \sum_{T\subseteq S, T \neq \varnothing} (-1)^{|T|-1}\min(T) \] 证明 不提供数学证明. 简要讲一下抽象理解伪证: 考虑从大到小排名为 \(i\) 的数,这个数会作为集合 \(T\) 的最小值出现时,那么 \(T\) 剩下的所有值都是从大于它的数中选取的.那么选取方案就是 \(\binom{i-1}{|T|-1}\). 如果 \(i=1\),也就是 \(a_i = \max(S)\),那么它只会被加上…
//待更qwq 反演原理 二项式反演 若 \[g_i=\sum_{j=1}^i {\binom ij} f_j\] , 则有 \[ f_i=\sum_{j=1}^i (-1)^{i-j} {i \choose j} g_j \] 同时, 若 \[g_i=\sum_{j=1}^i (-1)^j {i \choose j} f_j\] , 则有 \[f_i=\sum_{j=1}^i (-1)^j {i \choose j} g_j\] 通过反演原理和组合数的性质不难证明. 0/1? todo Sti…
min-max容斥学习笔记 前置知识 二项式反演 \[ f(n)=\sum_{i=0}^n\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}f(i) \] 一些定义 \(\max (S),\min (S)\)表示分别集合\(S\)的最大,最小元素 套路式子 \[ \max(S)=\sum_{\varnothing\not=S\subseteq T}(-1)^{|T|-1}\min(T) \] 证明 首先我…
min-max 容斥 给定集合 \(S\) ,设 \(\max(S)\) 为 \(S\) 中的最大值,\(\min(S)\) 为 \(S\) 中的最小值,则: \[\max(S)=\sum_{T\in S}(-1)^{|T|-1}\min(T)\] 这个东西叫 min-max容斥. 证明可以拿二项式反演证 例题 hdu4336 Card Collector 题目 有 \(n\) 种卡片,每一秒都有 \(P_i\) 的概率获得一张第 \(i\) 种卡片,求每张卡片都至少有一张的期望时间. 记 \(…
[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,c)-min(b,c)+min(a,b,c) .... 为什么这样做? 有的时候min要好算很多 期望的线性 所以可以直接套期望 然后例题: [HAOI2015]按位或 [HAOI2015]按位或 推广 from:在Ta的博客查看 max_k(S)表示S中第k大 依然可以套期望: luoguP470…