解:有两种做法......

第一种,按照秘密袭击coat的套路,我们只需要求出即可。因为一种操作了i次的方案会被恰好计数i次。

那么这个东西怎么求呢?直接用FWT的思想,对于一个状态s,求出选择s所有子集的概率ps。那么第i次操作后是s的子集的概率就是psi

设fs表示第i次操作之后是s的子集的概率。

把所有的f求出来之后做一次IFWT即可。然后我们对于所有非全集求和。

参考资料

 #include <bits/stdc++.h>

 const int N = , M = ;
const double eps = 1e-; double f[M], p[M], w[M];
int cnt[M], pw[M], n, lm; inline void FWT_or(double *a, int n, int f) {
for(int len = ; len < n; len <<= ) {
for(int i = ; i < n; i += (len << )) {
for(int j = ; j < len; j++) {
a[i + len + j] += f * a[i + j];
}
}
}
return;
} int main() {
scanf("%d", &n);
lm = << n;
for(int i = ; i < lm; i++) {
scanf("%lf", &p[i]);
w[i] = p[i];
if(i) {
cnt[i] = + cnt[i - (i & (-i))];
}
if(i > ) {
pw[i] = pw[i >> ] + ;
}
}
FWT_or(p, lm, );
for(int i = ; i < lm; i++) {
if(i != lm - && p[i] > - eps) {
puts("INF");
return ;
}
f[i] = 1.0 / ( - p[i]);
}
FWT_or(f, lm, -);
double ans = ;
for(int i = ; i < lm - ; i++) {
ans += f[i];
}
printf("%.10f\n", ans);
return ;
}

AC代码

第二种:Min-Max容斥。

设fs为把状态s的所有元素中至少一个变成1的期望次数。

同样是对步数0~∞求和,每次的概率是(没选到)i。最后Min-Max容斥统计答案。

 #include <bits/stdc++.h>

 const int N = , M = ;
const double eps = 1e-; double f[M], p[M], w[M];
int cnt[M], pw[M], n, lm; inline void FWT_or(double *a, int n, int f) {
for(int len = ; len < n; len <<= ) {
for(int i = ; i < n; i += (len << )) {
for(int j = ; j < len; j++) {
a[i + len + j] += f * a[i + j];
}
}
}
return;
}
/*
2
0.25 0.25 0.25 0.25 */
int main() {
scanf("%d", &n);
lm = << n;
for(int i = ; i < lm; i++) {
scanf("%lf", &p[i]);
w[i] = p[i];
if(i) {
cnt[i] = + cnt[i - (i & (-i))];
}
if(i > ) {
pw[i] = pw[i >> ] + ;
}
}
FWT_or(p, lm, );
for(int i = ; i < lm; i++) {
if(i != lm - && p[i] > - eps) {
printf("INF\n");
return ;
}
//printf("p %d = %lf \n", i, p[i]);
f[i] = 1.0 / ( - p[(lm - ) ^ i]);
}
//FWT_or(f, lm, -1);
double ans = ;
for(int i = ; i < lm; i++) {
if(cnt[i] & ) ans += f[i];
else ans -= f[i];
}
printf("%.10f\n", ans);
return ;
}

AC代码

BZOJ4036 按位或的更多相关文章

  1. min-max容斥 hdu 4336 && [BZOJ4036] 按位或

    题解: 之前听说过这个东西但没有学 令$max(S)$表示S中编号最大的元素,$min(S)$表示编号中最小的元素 $$max(S)=\sum{T \in S} {(-1)}^{|T|+1} min( ...

  2. Min-Max容斥及其推广和应用

    概念 Min-Max容斥,又称最值反演,是一种对于特定集合,在已知最小值或最大值中的一者情况下,求另一者的算法. 例如: $$max(a,b)=a+b-min(a,b) \\\ max(a,b,c)= ...

  3. BZOJ4036 [HAOI2015]按位或 FWT

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html 题目传送门 - BZOJ4036 题意 刚开始你有一个数字 $0$ ,每一秒钟你会随机 ...

  4. 【BZOJ4036】[HAOI2015]按位或 FWT

    [BZOJ4036][HAOI2015]按位或 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or ...

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

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

  6. bzoj4036 / P3175 [HAOI2015]按位或

    bzoj4036 / P3175 [HAOI2015]按位或 是一个 min-max容斥 的板子题. min-max容斥 式子: $ \displaystyle max(S) = \sum_{T\su ...

  7. BZOJ4036 HAOI2015按位或(概率期望+容斥原理)

    考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间.求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]. 考虑怎么求P[S].P[S]=∑p[s] (s&S& ...

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

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

  9. 【bzoj4036】按位或

    Portal --> bzoj4036 Solution  感觉容斥的东西内容有点qwq多啊qwq还是以题目的形式来慢慢补档好了  这里补的是min-max容斥 ​    其实min-max容斥 ...

随机推荐

  1. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例

    在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...

  2. matlab练习程序(渲染三原色)

    这里我用的空间是x向右为正,y向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0 ...

  3. 使用Java反射优化多个方法调用

    有段时间没来写博客了,心里一直念叨空了来,今天有时间来记录一篇.前段时间领导提出优化部分系统模块,根据业务要求系统中有很多产品,产品下面有N个指标,一个指标就对应一个方法,所以系统代码中就是这样一个情 ...

  4. luffy项目后台drf搭建(1)

    一 进入虚拟环境 打开crm,输入命令 workon luffy 虚拟环境使用文档 二 安装基本类库 pip install django pip install PymySQL pip instal ...

  5. kunbernetes-快速入门

    1.入门概述 本文以在容器云上部署一个nexus3应用为例,通过通过一步步的操作,帮助用户快速的对Kubernetes有一个快速和整体的认识.通过快速入门,可以提供如下知识内容: 在集群中部署一个容器 ...

  6. Offset Management For Apache Kafka With Apache Spark Streaming

    An ingest pattern that we commonly see being adopted at Cloudera customers is Apache Spark Streaming ...

  7. auth模块用户认证

    一.auth模块什么 auth模块时django自带的用户认证模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功 ...

  8. 拜托!面试请不要再问我Spring Cloud底层原理

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

  9. You earned your Program Management Professional (PgMP)® Credential

    You earned your Program Management Professional (PgMP)® Credential. pasting

  10. HTTP常见错误返回状态代码

    当⽤用户试图通过HTTP或FTP协议访问⼀一台运⾏行行主机上的内容时,Web服务器器返回⼀一个表示该请求的状态的数字代码.该状态代码记录在服务器器⽇日志中,同时也可能在Web 浏览器器或 FTP客户端 ...