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

第一种,按照秘密袭击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. SQL Server 索引碎片产生原理重建索引和重新组织索引

    数据库存储本身是无序的,建立了聚集索引,会按照聚集索引物理顺序存入硬盘.既键值的逻辑顺序决定了表中相应行的物理顺序 多数情况下,数据库读取频率远高于写入频率,索引的存在 为了读取速度牺牲写入速度 页 ...

  2. C#的自动拼接Sql语句Insert方法及思路

    思路: 1.想想插入语句,大概是这样的一个框架:INSERT INTO 表名 (数据库列名) values (值) 2.这里要3个变量是不固定的,分别是:表名.数据库列名.值: a.表名我们这里很容易 ...

  3. 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

    我的博客即将入驻"云栖社区",诚邀技术同仁一同入驻. 博客搬家邀请码NXLZV

  4. Docker的使用初探(一):常用指令说明

    目录 Docker的使用初探(一):常用指令说明 为什么要用Docker Docker的安装与简单使用 国内镜像加速 常用指令 Docker的使用初探(一):常用指令说明 前几个星期实践的了,再不记录 ...

  5. VMware14虚拟机下安装Centos6.5

    一.下载VMware14,CentOS6.5光盘映像文件. https://pan.baidu.com/s/1WaTBnYuNC5dLYM_Ra2bjBQ 二.安装过程 1.打开VMware虚拟机 — ...

  6. RabbitMQ远程执行任务RPC。

    如果想发一条命令给远程机器,再把结果返回 这种模式叫RPC:远程过程调用 发送方将发送的消息放在一个queue里,由接收方取. 接收方再把执行结果放在另外一个queue里,由发送方取 实际上,发送方把 ...

  7. String输出结果to thi

    http://blog.csdn.net/itmyhome1990/article/details/9132929

  8. SQL解析在美团的应用

    https://tech.meituan.com/SQL_parser_used_in_mtdp.html 数据库作为核心的基础组件,是需要重点保护的对象.任何一个线上的不慎操作,都有可能给数据库带来 ...

  9. JavaScript 函数闭包的应用

    一.模仿块级作用域 JavaScript 没有块级作用域的概念,那么可以模拟像java中将很多变量私有化封装起来,保护数据,防止数据泄漏,封装细节,这样安全性和可控性更高 function box(c ...

  10. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序(转)

    文章转自   http://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/cuisi/p/7685893.html