BZOJ4036 按位或


解:有两种做法......
第一种,按照秘密袭击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 按位或的更多相关文章
- min-max容斥 hdu 4336 && [BZOJ4036] 按位或
题解: 之前听说过这个东西但没有学 令$max(S)$表示S中编号最大的元素,$min(S)$表示编号中最小的元素 $$max(S)=\sum{T \in S} {(-1)}^{|T|+1} min( ...
- Min-Max容斥及其推广和应用
概念 Min-Max容斥,又称最值反演,是一种对于特定集合,在已知最小值或最大值中的一者情况下,求另一者的算法. 例如: $$max(a,b)=a+b-min(a,b) \\\ max(a,b,c)= ...
- BZOJ4036 [HAOI2015]按位或 FWT
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4036.html 题目传送门 - BZOJ4036 题意 刚开始你有一个数字 $0$ ,每一秒钟你会随机 ...
- 【BZOJ4036】[HAOI2015]按位或 FWT
[BZOJ4036][HAOI2015]按位或 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or ...
- 【BZOJ4036】按位或(Min-Max容斥,FWT)
[BZOJ4036]按位或(Min-Max容斥,FWT) 题面 BZOJ 洛谷 题解 很明显直接套用\(min-max\)容斥. 设\(E(max\{S\})\)表示\(S\)中最晚出现元素出现时间的 ...
- bzoj4036 / P3175 [HAOI2015]按位或
bzoj4036 / P3175 [HAOI2015]按位或 是一个 min-max容斥 的板子题. min-max容斥 式子: $ \displaystyle max(S) = \sum_{T\su ...
- BZOJ4036 HAOI2015按位或(概率期望+容斥原理)
考虑min-max容斥,改为求位集合内第一次有位变成1的期望时间.求出一次操作选择了S中的任意1的概率P[S],期望时间即为1/P[S]. 考虑怎么求P[S].P[S]=∑p[s] (s&S& ...
- BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】
题目链接 BZOJ4036 题解 好套路的题啊,,, 我们要求的,实际上是一个集合\(n\)个\(1\)中最晚出现的\(1\)的期望时间 显然\(minmax\)容斥 \[E(max\{S\}) = ...
- 【bzoj4036】按位或
Portal --> bzoj4036 Solution 感觉容斥的东西内容有点qwq多啊qwq还是以题目的形式来慢慢补档好了 这里补的是min-max容斥 其实min-max容斥 ...
随机推荐
- Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例
在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...
- matlab练习程序(渲染三原色)
这里我用的空间是x向右为正,y向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0 ...
- 使用Java反射优化多个方法调用
有段时间没来写博客了,心里一直念叨空了来,今天有时间来记录一篇.前段时间领导提出优化部分系统模块,根据业务要求系统中有很多产品,产品下面有N个指标,一个指标就对应一个方法,所以系统代码中就是这样一个情 ...
- luffy项目后台drf搭建(1)
一 进入虚拟环境 打开crm,输入命令 workon luffy 虚拟环境使用文档 二 安装基本类库 pip install django pip install PymySQL pip instal ...
- kunbernetes-快速入门
1.入门概述 本文以在容器云上部署一个nexus3应用为例,通过通过一步步的操作,帮助用户快速的对Kubernetes有一个快速和整体的认识.通过快速入门,可以提供如下知识内容: 在集群中部署一个容器 ...
- 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 ...
- auth模块用户认证
一.auth模块什么 auth模块时django自带的用户认证模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功 ...
- 拜托!面试请不要再问我Spring Cloud底层原理
概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...
- You earned your Program Management Professional (PgMP)® Credential
You earned your Program Management Professional (PgMP)® Credential. pasting
- HTTP常见错误返回状态代码
当⽤用户试图通过HTTP或FTP协议访问⼀一台运⾏行行主机上的内容时,Web服务器器返回⼀一个表示该请求的状态的数字代码.该状态代码记录在服务器器⽇日志中,同时也可能在Web 浏览器器或 FTP客户端 ...