位与位间互不影响。一位一位计算。

长度为 \(1\) 的区间,选出概率为 \(1/n^2\)。其余区间,选出概率为 \(2/n^2\)。(这里的区间 \(l \leq r\))

枚举右端点。记 \(last_0\) 表示 \(0\) 上一次出现的位置。 \(last_1\) 同样。

下面我们只研究区间长度不为 \(1\) 的。为 \(1\) 的话直接计上就好了。

对于 \(\mathrm{and}\) 和,倘若当前数的这一位为 \(0\) 则不用计算,否则,左端点在 \([last_0+1,now-1]\) 间的区间都是合法的,答案累计 \(2 \times 2^k \times (now-last_0-1) /n^2\)。\(now\) 是当前在枚举哪个右端点,\(k\) 是当前在枚举 \(a_{now}\) 的二进制第 \(k\) 位。

对于 \(\mathrm{or}\) 和,倘若当前数的这一位为 \(1\) 则左端点在 \([1,now-1]\) 的区间都合法,否则,在 \([1,last_1]\) 间的都合法。

对于 \(\mathrm{xor}\) 和,我们发现,所有的这一位数为 \(1\) 的数字,把数列分成了好几段。我们记 \(cnt_0\) 表示当 \(a_{now}\) 的这一位是 \(0\) 时有多少个左端点是能对答案产生贡献的。 \(cnt_1\) 同理。

如果当前这位是 \(0\),那么答案累计上 \(2 \times 2^k \times cnt_0 / n^2\) 并 \(cnt_0 \leftarrow cnt_0 + 1\)。

如果当前这位是 \(1\),那么答案累计上 \(2 \times 2^k \times cnt_1 / n^2\)。然后交换 \(cnt_0,cnt_1\) 并 \(cnt_1 \leftarrow cnt_1 + 1\)。

#include <iostream>
#include <cstdio>
using namespace std;
int n, a[100005], lst0, lst1, cnt0, cnt1;
double ansand, ansxor, ansor;
int main(){
cin>>n;
for(int i=1; i<=n; i++)
scanf("%d", &a[i]);
for(int i=0; i<=29; i++){
lst0 = lst1 = cnt0 = cnt1 = 0;
for(int j=1; j<=n; j++){
int x=(a[j]>>i)&1;
if(x){
ansand += 1.0 * (1<<i) / n / n;
ansxor += 1.0 * (1<<i) / n / n;
ansor += 1.0 * (1<<i) / n / n;
ansand += 2.0 * (j - lst0 - 1) * (1<<i) / n / n;
ansor += 2.0 * (j - 1) * (1<<i) / n / n;
ansxor += 2.0 * cnt1 * (1<<i) / n / n;
swap(cnt0, cnt1);
cnt0++;
lst1 = j;
}
else{
ansxor += 2.0 * cnt0 * (1<<i) / n / n;
ansor += 2.0 * lst1 * (1<<i) / n / n;
cnt1++;
lst0 = j;
}
}
}
printf("%.3f %.3f %.3f\n", ansxor, ansand, ansor);
return 0;
}

joyoi2020/lfyzoj114 Rainbow 的信号的更多相关文章

  1. Rainbow的信号

    Rainbow的信号 有一串长度为n的数列,现在从中等概率选出l,r,如果l大于r,则交换,有三个询问 l~r间的数与和的数学期望 l~r间的数或和的数学期望 l~r间的数异或和的数学期望 对于100 ...

  2. tyvj 2020 rainbow 的信号

    期望 被精度坑惨的我 注意:能开 long long 尽量开, 先除后乘, int 转 double 的时候 先转换在做运算 本题与位运算有关,位与位之间互不影响,所以我们可以分开考虑 #includ ...

  3. [BZOJ3054] Rainbow的信号(考虑位运算 + DP?)

    传送门 BZOJ没数据范围... 其实数据范围是这样的.. 前20%可以直接n^3暴力枚举每个区间 前40%可以考虑每一位,因为所有数每一位都是独立的,而和的期望=期望的和,那么可以枚举每一位,再枚举 ...

  4. Rainbow的信号 CH3801

    题目链接 题意:求n个整数任意取一个区间,一起进行xor,and,或or的操作,求xor的期望值,and的期望值,or的期望值. 思路:区间取的左端点为l,右端点为r,当r==l时,选的概率为1/n/ ...

  5. $CH$3801 $Rainbow$的信号 期望+位运算

    正解:位运算 解题报告: 传送门! 其实就是个位运算,,,只是顺便加了个期望的知识点$so$期望的帕并不难来着$QwQ$ 先把期望的皮扒了,就直接分类讨论下,不难发现,答案分为两个部分 $\left\ ...

  6. AcWing 216 Rainbow 的信号

    题意 给定一个长度为n的序列,然后从\(1\sim N\) 这 N 个数中选取两个数\(l,r\) , 如果\(l>r\),则交换\(l,r\).把第\(l\) 个数到第\(r\)个数取出来构成 ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. CH3801Rainbow的信号

    Description Freda发明了传呼机之后,rainbow进一步改进了传呼机发送信息所使用的信号.由于现在是数字.信息时代,rainbow发明的信号用N个自然数表示.为了避免两个人的对话被大坏 ...

  9. Rainbow: Combining Improvements in Deep Reinforcement Learning

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1710.02298v1 [cs.AI] 6 Oct 2017 (AAAI 2018) Abstract 深度强化学习社区对D ...

随机推荐

  1. (转)MySql的常用的语句

    MySQL常用语句 一.连接MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysql bin, ...

  2. idea中deployment点击加号没有出现artifact

    转载 在主页面打开ProjectStructure,点击图示的按钮或是按ctrl+shift+alt+s快捷键 打开ProjectStructure后,按照图示依次点击Facets->+号,在弹 ...

  3. po3580SuperMemo(splay)

    链接 操作不少,不过都是一些基本的操作,增删,旋转,逆转,询问最小. 注意一点:T<0时 让t=0: 旋转的时候,是顺时针旋转,数据范围在int内. 刚开始旋转转错方向了.. #include ...

  4. springCloud当中Eureca sever当中Camden到底是什么?

    [学习笔记] 做个普通的maven project,quickstart archetype.改成jdk.8.下面Camden.SR1是版本名,springcloud的版本名称很奇特,它是按照伦敦地铁 ...

  5. jenkins SVN更改密码后出现的坑爹问题

    1.前提 公司SVN账号密码和AD账号密码是绑定在一起的,为了保证代码检出总是最新,jenkins中做代码检查前总会从SVN中检出最新代码. 最近公司要求AD账户不得使用原始密码,更改密码后,jenk ...

  6. 当ThreadLocal碰上线程池

    ThreadLocal使用 ThreadLocal可以让线程拥有本地变量,在web环境中,为了方便代码解耦,我们通常用它来保存上下文信息,然后用一个util类提供访问入口,从controller层到s ...

  7. EJB2.0教程 详解EJB技术及实现原理

    EJB是什么呢?EJB是一个J2EE体系中的组件.再简单的说它是一个能够远程调用的javaBean.它同普通的javaBean有两点不同.第一点,就是远程调用.第二点,就是事务的功能,我们在EJB中声 ...

  8. codevs 3054 高精度练习-文件操作

    时间限制: 1 s  空间限制: 64000 KB  题目等级 : 钻石 Diamond 题目描述 Description 输入一组数据,将每个数据加1后输出 输入描述 Input Descripti ...

  9. CSS3制作的一款按钮特效

    /*.btn { width:230px; height:70px; font-size:70px; font-weight:bold; overflow:hidden; font: "He ...

  10. Linux之Nginx服务 nfs文件存储 负载均衡

    一.搭建Nginx服务 Nginx 是俄罗斯人编写的十分轻量级的HTTP 服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个I ...