joyoi2020/lfyzoj114 Rainbow 的信号
位与位间互不影响。一位一位计算。
长度为 \(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 的信号的更多相关文章
- Rainbow的信号
Rainbow的信号 有一串长度为n的数列,现在从中等概率选出l,r,如果l大于r,则交换,有三个询问 l~r间的数与和的数学期望 l~r间的数或和的数学期望 l~r间的数异或和的数学期望 对于100 ...
- tyvj 2020 rainbow 的信号
期望 被精度坑惨的我 注意:能开 long long 尽量开, 先除后乘, int 转 double 的时候 先转换在做运算 本题与位运算有关,位与位之间互不影响,所以我们可以分开考虑 #includ ...
- [BZOJ3054] Rainbow的信号(考虑位运算 + DP?)
传送门 BZOJ没数据范围... 其实数据范围是这样的.. 前20%可以直接n^3暴力枚举每个区间 前40%可以考虑每一位,因为所有数每一位都是独立的,而和的期望=期望的和,那么可以枚举每一位,再枚举 ...
- Rainbow的信号 CH3801
题目链接 题意:求n个整数任意取一个区间,一起进行xor,and,或or的操作,求xor的期望值,and的期望值,or的期望值. 思路:区间取的左端点为l,右端点为r,当r==l时,选的概率为1/n/ ...
- $CH$3801 $Rainbow$的信号 期望+位运算
正解:位运算 解题报告: 传送门! 其实就是个位运算,,,只是顺便加了个期望的知识点$so$期望的帕并不难来着$QwQ$ 先把期望的皮扒了,就直接分类讨论下,不难发现,答案分为两个部分 $\left\ ...
- AcWing 216 Rainbow 的信号
题意 给定一个长度为n的序列,然后从\(1\sim N\) 这 N 个数中选取两个数\(l,r\) , 如果\(l>r\),则交换\(l,r\).把第\(l\) 个数到第\(r\)个数取出来构成 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- CH3801Rainbow的信号
Description Freda发明了传呼机之后,rainbow进一步改进了传呼机发送信息所使用的信号.由于现在是数字.信息时代,rainbow发明的信号用N个自然数表示.为了避免两个人的对话被大坏 ...
- Rainbow: Combining Improvements in Deep Reinforcement Learning
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1710.02298v1 [cs.AI] 6 Oct 2017 (AAAI 2018) Abstract 深度强化学习社区对D ...
随机推荐
- Codeforces Beta Round #12 (Div 2 Only) D. Ball 树状数组查询后缀、最值
http://codeforces.com/problemset/problem/12/D 这里的BIT查询,指的是查询[1, R]或者[R, maxn]之间的最值,这样就够用了. 设三个权值分别是b ...
- MySQL在远程访问时非常慢的解决skip-name-resolve
服务器放在局域网内进行测试时,数据库的访问速度还是很快.但当服务器放到外网后,数据库的访问速度就变得非常慢. 后来在网上发现解决方法,my.cnf里面添加 [mysqld] skip-name-res ...
- 开源GIS-对比GeoServer和MapServer
1 主流组合: 基于C.C++系列的:Mapserver(服务器)+QGIS(桌面软件)+PostGIS(数据库)+Openlayers(JS)/ openscale (FLex)(浏览器客户端) ...
- BundleConfig包含js,css失败
今天在做mvc项目的时候,引入了bootstrap样式.但是包含css和js的时候出错了 于是我查阅资料,好多人都说后缀名前面不能包含".",于是我把min前面的".&q ...
- bootstrap警告框、进度条和列表组
警告框 <div class="container"> <div class="alert alert-success" rol ...
- bootstrop媒体对象、面板和Well
媒体对象 <div class="media"> <div class="media-left"> < ...
- Error CS0579 Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute
今天在引入ClassLibraryQikuo的时候突然报错 Error CS0579 Duplicate 'System.Reflection.AssemblyTitleAttribute' attr ...
- cat 参数
-A 相当于-vET的整合参数 -E 将结尾的换行符$显示出来 -n 显示行号 -T 将tab键以^T显示出来 -v 列出一些看不出来的特殊字符
- 洛谷 P2353 背单词
题目背景 小明对英语一窍不通,令老师十分头疼.于是期末考试前夕,小明被逼着开始背单词…… 题目描述 老师给了小明一篇长度为N的英语文章,然后让小明背M个单词.为了确保小明不会在背单词时睡着,老师会向他 ...
- maven打包错误:java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.118 sec <<< FAILURE! - in ...