题目: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(S) = max(S) = \sum\limits_{T \subseteq S} (-1)^{|T|-1} min(T) \)

\( min(T) = \frac{1}{ \sum\limits_{K \cap T \neq \varnothing} p_{K} } \)

\( \sum\limits_{K \cap T \neq \varnothing} p_{K} = 1 - \sum\limits_{k \subseteq C_{U}^{T} } p_{k} \)

求个高维前缀和(FMT)即可。

代码如下:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define eps 1e-6
  5. using namespace std;
  6. typedef double db;
  7. int const xn=(<<)+;
  8. int n,bin[];
  9. bool vis[]; db p[xn],mn[xn];
  10. int cal(int s){int ret=; while(s)ret+=(s&),s>>=; return ret;}
  11. void fmt(db *a,int tp)
  12. {
  13. for(int d=;d<bin[n];d<<=)
  14. for(int s=;s<bin[n];s++)
  15. if(s&d)a[s]+=a[s^d]*tp;
  16. }
  17. int main()
  18. {
  19. scanf("%d",&n);
  20. bin[]=; for(int i=;i<=n;i++)bin[i]=(bin[i-]<<);
  21. for(int i=;i<bin[n];i++)
  22. {
  23. scanf("%lf",&p[i]);
  24. if(p[i]){for(int d=;d<n;d++)if(i&bin[d])vis[d]=;}
  25. }
  26. for(int i=;i<n;i++)if(!vis[i]){puts("INF"); return ;}
  27. fmt(p,);
  28. for(int s=;s<bin[n];s++)
  29. if(-p[(bin[n]-)^s]>eps)mn[s]=1.0/(-p[(bin[n]-)^s]);//s=1
  30. db ans=;
  31. for(int s=;s<bin[n];s++)ans+=mn[s]*((cal(s)&)?:-);//s=1
  32. printf("%.10f\n",ans);
  33. return ;
  34. }

bzoj 4036 按位或 —— min-max容斥+FMT的更多相关文章

  1. 【BZOJ4036】按位或(Min-Max容斥,FWT)

    [BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的 ...

  2. bzoj 4036: [HAOI2015]按位或【min-max容斥+FWT】

    其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s ...

  3. [HAOI2015]按位或(min-max容斥,FWT,FMT)

    题目链接:洛谷 题目大意:给定正整数 $n$.一开始有一个数字 $0$,然后每一秒,都有 $p_i$ 的概率获得 $i$ 这个数 $(0\le i< 2^n)$.一秒恰好会获得一个数.每获得一个 ...

  4. BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】

    题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = ...

  5. P3175-[HAOI2015]按位或【min-max容斥,FWT】

    正题 题目链接:https://www.luogu.com.cn/problem/P3175 题目大意 开始有一个\(n\)位二进制数\(s=0\),每次有\(p_i\)概率选取数字\(i\)让\(s ...

  6. BZOJ.4559.[JLOI2016]成绩比较(DP/容斥 拉格朗日插值)

    BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{ ...

  7. BZOJ 2005 [Noi2010]能量采集 (数学+容斥 或 莫比乌斯反演)

    2005: [Noi2010]能量采集 Time Limit: 10 Sec  Memory Limit: 552 MBSubmit: 4493  Solved: 2695[Submit][Statu ...

  8. 【BZOJ 3771】 3771: Triple (FFT+容斥)

    3771: Triple Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 547  Solved: 307 Description 我们讲一个悲伤的故事. ...

  9. BZOJ 2301 Problem b (莫比乌斯反演+容斥)

    这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\le ...

随机推荐

  1. brew || yarn 软件包管理工具

    1.brew || yarn 软件包管理工具

  2. [WinForm]FastColoredTextBox控件(附源码)

    Fast Colored TextBox is text editor component for .NET. Allows you to create custom text editor with ...

  3. C# listview鼠标移动颜色设置问题

    private void Listview1_MouseMove(object sender, MouseEventArgs e) { ListView _ListView = (ListView)s ...

  4. poj3686

    题解: KM算法 把每一个点拆成n个 然后改变编圈 代码: #include<cstdio> #include<cmath> #include<cstring> # ...

  5. springboot jpa 批量保存数据--EntityManager和 JpaRepository

    1: 项目里面使用springboo-boot-start-data-jpa操作数据库,通过源码,在repository上继承JpaRepository 可以实现保存操作,其中源码接口为: <S ...

  6. 第9课:备份mysql数据库、重写父类、unittest框架、多线程

    1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 impo ...

  7. Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析

    Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936   XEN 与 VMware ESXi,Hyper-V 以及 K ...

  8. python marshal 对象序列化和反序列化

    有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上.Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle ...

  9. Http权威指南(服务器、缓存)

    对于web服务器(软件)大家应该不会陌生,常见的web服务器有Apache.IIS.Tomcat.Nginx.Jetty等等. 1.基本功能 几乎所有的web服务器都会执行以下几项同样的任务: 1.建 ...

  10. [置顶] 如何用PYTHON代码写出音乐

    如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深 ...