[BZOJ 4036][HAOI2015]按位或
4036: [HAOI2015]按位或
Time Limit: 10 Sec Memory Limit: 256 MBSec Special Judge
Submit: 746 Solved: 456
[Submit][Status][Discuss]Description
刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or)操作。选择数字i的概率是p[i]。保证0<=p[i]<=1,Σp[i]=1问期望多少秒后,你手上的数字变成2^n-1。Input
第一行输入n表示n个元素,第二行输入2^n个数,第i个数表示选到i-1的概率
Output
仅输出一个数表示答案,绝对误差或相对误差不超过1e-6即可算通过。如果无解则要输出INF
Sample Input
2
0.25 0.25 0.25 0.25Sample Output
2.6666666667HINT
对于100%的数据,n<=20
题解
首先无解非常好判. 非 $0$ 概率值全都或起来如果得不到全集就肯定无解了.
这题要求期望...考虑期望等于啥...
每步开始之前, 我们对于非全集的情况都需要继续进行下一步.
由期望的线性性, 我们可以对于每一步都分开计算.
而进行完一步之后每种状态的概率要怎么算呢? 显然我们有:
$$ c_k=\sum_{i\operatorname{or}j=k} a_it_j$$
显然这是一个或运算卷积的形式. 所以对于一步的情况, 我们可以FWT解决.
但是在这个题目里则可能是无限步, 我们继续来思考.
因为FWT满足卷积定理, 所以我们有:
$$ \operatorname{FWT}\left(\sum_{i=0}^\infty t^i\right)_k=\sum_{i=0}^\infty \operatorname{FWT}(t)_k^i $$
而等式右边是个首项为 $1$ 的等比数列求和式, 因为 $\operatorname{FWT}(t)_k\leq 1$ 所以这个值一定收敛于 $\frac 1 {1-\operatorname{FWT}(t)_k}$.
算完 $\operatorname{FWT}^{-1}$ 回去求所有非全集下标的和就行了.
代码实现
毕姥爷: 从我们都熟悉的FWT开始
#include <bits/stdc++.h> const int DWT=;
const int IDWT=-;
const int MAXN=(<<)+; double a[MAXN]; void FWT(double*,int,int); int main(){
int n;
scanf("%d",&n);
int len=<<n;
int cur=;
for(int i=;i<len;i++){
scanf("%lf",a+i);
if(a[i]>)
cur|=i;
}
if(cur!=len-)
puts("INF");
else{
FWT(a,len,DWT);
for(int i=;i<len;i++)
a[i]=1.0/(-a[i]);
FWT(a,len,IDWT);
double ans=;
for(int i=;i<len-;i++)
ans+=a[i];
printf("%.10f\n",ans);
}
return ;
} void FWT(double* a,int len,int opt){
for(int i=;i<len;i<<=)
for(int j=;j<len;j+=i<<)
for(int k=;k<i;k++)
a[j+k+i]+=opt*a[j+k];
}
BZOJ 4036

[BZOJ 4036][HAOI2015]按位或的更多相关文章
- BZOJ 4036: [HAOI2015]按位或 集合幂函数 莫比乌斯变换 莫比乌斯反演
http://www.lydsy.com/JudgeOnline/problem.php?id=4036 http://blog.csdn.net/lych_cys/article/details/5 ...
- bzoj 4036 [HAOI2015]按位或——min-max容斥+FMT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4036 题解:https://www.cnblogs.com/Zinn/p/10260126. ...
- bzoj 4036: [HAOI2015]按位或【min-max容斥+FWT】
其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s ...
- BZOJ 4036 [HAOI2015] Set 解题报告
首先我们不能一位一位的考虑,为什么呢? 你想想,你如果一位一位地考虑的话,那么最后就只有 $n$ 个数字,然而他给了你 $2^n$ 个数字,怎么看都不对劲呀.(我是因为这样子弄没过样例才明白的) 所以 ...
- 【BZOJ4036】[HAOI2015]按位或 FWT
[BZOJ4036][HAOI2015]按位或 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or ...
- BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 )
BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 ) 题意分析 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 ...
- [luogu 3175] [HAOI2015]按位或(min-max容斥+高维前缀和)
[luogu 3175] [HAOI2015]按位或 题面 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行按位或运算.问期望多少秒后,你手上的数字变成2^n ...
- BZOJ 4033: [HAOI2015]树上染色题解
BZOJ 4033: [HAOI2015]树上染色题解(树形dp) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327400 原题地址: BZOJ 403 ...
- bzoj4036 / P3175 [HAOI2015]按位或
bzoj4036 / P3175 [HAOI2015]按位或 是一个 min-max容斥 的板子题. min-max容斥 式子: $ \displaystyle max(S) = \sum_{T\su ...
随机推荐
- log4php0.9的详细配备实例说明
一.什么是log4php: log4j在JAVA中可算是大名鼎鼎的日志开发包了,它为apche组织维护项目,VxR兄使用php来实现了log4j的功能, 目前log4php已经作为log4j的一个子项 ...
- linux centos 7.5 安装mysql5.7
1 下载tar包,这里使用wget从官网下载(注:下载地址随时可能有变动,wget命令默认下载目录为当前所在文件夹) wget https://dev.mysql.com/get/Downloads/ ...
- 09 jdk1.5的并发容器:ConcurrentHashMap
一 概述 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能 因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是 ...
- System.Web.Caching.Cache类 缓存 各种缓存依赖(转)
转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime ...
- vue.js 开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- 亿级别记录的mongodb分页查询java代码实现
1.准备环境 1.1 mongodb下载 1.2 mongodb启动 C:\mongodb\bin\mongod --dbpath D:\mongodb\data 1.3 可视化mongo工具Robo ...
- [PY3]——内置数据结构(3)——字符串及其常用操作
字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...
- Unity 动态加载资源的方式。
方式 特点 用法 Resource.load 安装包会比较大 在Asset文件夹下建一个Resources命名的文件夹,在打包安装包时会把 Resources文件夹下的所有文件都打包进去,不管 ...
- [转] 如何应用设计模式设计你的足球引擎(一和二)----Design Football Game(Part I and II)
原文地址: http://www.codeproject.com/KB/architecture/applyingpatterns.aspx 作者:An 'OOP' Madhusudanan 译者:赖 ...
- github flow
github flow Github flow 是Git flow的简化版,专门配合"持续发布".它是 Github.com 使用的工作流程 它只有一个长期分支,就是master, ...