性质:一个数分解质因数后2的次数=二进制下末尾连续0的个数。

乘2比较好考虑,比较恶心的是+1。一个$k*2^0$的数+1后可能会出现很多情况。但是k这个数表示不出来。

但是加的操作最多有200次,也就是说最多影响二进制下的后8位。根据上述性质,我们把后8为作为状态,统计概率。

但是只有后8位状态的的话还是不可做,再加上第9位状态以及与第九位相同的连续长度来考虑进位。

即f[i][j][s][k]表示i次操作后,后8位为s,第九位为k,有连续j位的概率。

转移少麻烦但还是比较好想的。本题难度在于状态定义。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<bitset>
#define int LL
#define LL long long
using namespace std;
int x,n,p;
double gl1,gl2;
double f[210][255][1<<10][2];
int cnt[1<<10];
signed main()
{
// freopen("in.txt","r",stdin);
// freopen("1.out","w",stdout); cin>>x>>n>>p;
gl1=p/100.0,gl2=(100-p)/100.0; int num=0;
for(int j=0;(((1<<j)&x)==0);j++)num++;
f[0][num>8?num-8:1][x&((1<<8)-1)][(bool)(x&(1<<8))]=1;
// cout<<(num>8?num-8:1)<<" "<<(x&((1<<8)-1))<<" "<<(x&(1<<8))<<endl;
for(int i=0;i<n;i++)
for(int j=1;j<=250;j++)
for(int s=0;s<(1<<8);s++)
{
if(s!=(1<<8)-1)f[i+1][j][s+1][0]+=f[i][j][s][0]*gl2;
else f[i+1][1][0][1] +=f[i][j][s][0]*gl2;
if(s!=(1<<8)-1)f[i+1][j][s+1][1]+=f[i][j][s][1]*gl2;
else f[i+1][j][0][0] +=f[i][j][s][1]*gl2;
bool maxn=s&(1<<7);
f[i+1][maxn==0?j+1:1][(s<<1)&((1<<8)-1)][maxn]+=f[i][j][s][0]*gl1;
f[i+1][maxn==1?j+1:1][(s<<1)&((1<<8)-1)][maxn]+=f[i][j][s][1]*gl1;
}
/* for(int i=0;i<n;i++)
for(int j=1;j<=10;j++)
for(int s=0;s<(1<<8);s++)
cout<<f[i][j][s][0]<<" "<<f[i][j][s][1]<<endl*/ for(int i=0;i<(1<<8);i++)
for(int j=0;j<=8&&(((1<<j)&i)==0);j++)cnt[i]++;
double ans=0;
for(int i=1;i<(1<<8);i++)
for(int j=1;j<=250;j++)
ans+=(f[n][j][i][0]+f[n][j][i][1])*cnt[i];
for(int j=1;j<=250;j++)ans+=f[n][j][0][0]*(j+8)+f[n][j][0][1]*8;
printf("%0.10lf\n",ans);
}

HZOJ 简单的期望的更多相关文章

  1. 简单题[期望DP]

    也许更好的阅读体验 \(\mathcal{Description}\) 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌 ...

  2. [CSP-S模拟测试]:简单的期望(DP)

    题目描述 从前有个变量$x$,它的初始值已给出. 你会依次执行$n$次操作,每次操作有$p\%$的概率令$x=x\times 2$,$(100−p)\%$的概率令$x=x+1$. 假设最后得到的值为$ ...

  3. poj 2096 Collecting Bugs (概率dp 天数期望)

    题目链接 题意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcom ...

  4. 【期望DP】

    [总览] [期望dp] 求解达到某一目标的期望花费:因为最终的花费无从知晓(不可能从$\infty$推起),所以期望dp需要倒序求解. 设$f[i][j]$表示在$(i, j)$这个状态实现目标的期望 ...

  5. 2018.08.30 Tyvj1952 Easy(期望dp)

    Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...

  6. 【BZOJ4720】【NOIP2016】换教室 [期望DP]

    换教室 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行四个整数n,m,v ...

  7. 【BZOJ3029】守卫者的挑战 [期望DP]

    守卫者的挑战 Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 打开了黑魔法师Vani的大门,队 ...

  8. 【BZOJ1419】 Red is good [期望DP]

    Red is good Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 桌面上有R张红牌和B张 ...

  9. CF895 E. Eyes Closed(线段树 期望)

    题意 Sol 今天考试的T3,,我本来留了一个小时去写.但是T2一刚就刚了两个小时 最后也没来的及写.. 然后考完 开始写,,25min就A了.. 感觉自己太高估自己的思维,太低估自己的码力了... ...

随机推荐

  1. AGC035D

    AGC035D Add and Remove 题意 给出\(n\)个数,每次删除一个不在两端的数,然后把它的权值加到相邻的两个数上. 问操作\(n-2\)次后,所剩的两数之和的最小值 \(n\le18 ...

  2. 02Redis入门指南笔记(基本数据类型)

    一:热身 获得符合规则的健名列表:keys  pattern pattern支持glob风格的通配符,具体规则如下表: Redis命令不区分大小写.keys命令需要遍历Redis中的所有健,当键的数量 ...

  3. 使用pdf.js在移动端预览pdf文档

    pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持. 在线演示地址:http://mozilla.github.com/pdf.js/web/viewe ...

  4. [转]js作用域系列——内部原理

    前面的话 javascript拥有一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量,这套规则被称为作用域.作用域貌似简单,实则复杂,由于作用域与this机制非常容易混淆,使得理解作用域的原 ...

  5. 组件化开发之vue

    今天写了写vue的组件化开发demo,有些小的心得.分享一下. 组件化意味着代码可以复用,调用组件就可以了.然后可以通过组件调用组件的相关能力. 例如以前我做组件化开发的一个小项目 原生js组件的实现 ...

  6. ACdream 1108(莫队)

    题目链接 The kth number Time Limit: 12000/6000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) ...

  7. 二零一七年工作中常用的基本Linux命令记录(Ubuntu)

    Linux命令如下(Ubuntu): 1. apt-get install openssh-server 下载远程工具 2. apt-get install lrzsz 上传下载工具 3. apt-g ...

  8. POJ1635Subway tree systems

    Subway tree systems Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8049   Accepted: 33 ...

  9. NOIP模拟 7.01

    水灾(sliker.cpp/c/pas) 1000MS  64MB 大雨应经下了几天雨,却还是没有停的样子.土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没. CCY ...

  10. Java开发中的Memcache原理及实现

    Memcached 客户端程序 Memcached的java客户端已经存在三种了: ?  官方提供的基于传统阻塞io由Greg Whalin维护的客户端 ?  Dustin Sallings实现的基于 ...