[CodeForces-441E]Valera and Number
题目大意:
给你一个数x,进行k次操作:
1.有p%的概率将x翻倍;
2.有1-p%的概率将x加1。
问最后二进制下x末尾0个数的期望。
思路:
动态规划。
由于k只到200,所以每次修改只与最后8位有关。
f[i][x][y][z]表示操作次数为i时,末尾8为表示的数字为x,第9位为y,第9位及以上和第9位数字连续相同的长度。
对于两种情况分别转移,注意特判超过8位的进位。
最后计算期望的时候,可以枚举第一维为k的所有状态,然后通过状态可以直接计算出末尾0的数量,乘上概率即可。
#include<cstdio>
#include<cctype>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int K=;
double f[K][][][];//[処理回数][末尾8bit][9bit目の値][9bit目の値が上にいくつ連続するか]
int main() {
int x=getint(),k=getint();
double p=getint()/100.0;
//初始状态
int cnt=,tmp=x>>;
while(tmp&&((tmp&)==((x>>)&))) {
tmp>>=;
cnt++;
}
f[][x&][(x>>)&][cnt]=;
for(register int i=;i<k;i++) {
for(register int x=;x<=;x++) {
for(register int y=;y<;y++) {
for(register int z=;z<;z++) {
/*times 2*/
f[i+][(x<<)&][(x>>)&][(((x>>)&)^y)?:(z+)]+=f[i][x][y][z]*p;
/*plus 1*/
if(x==) {//特殊情况:考虑最后八位存不下而进位的情况
if(y) {//如果第九位是1,则相当于前面那么多1都变成0
f[i+][][][z]+=f[i][x][y][z]*(-p);
} else {//如果第九位是0,则相当于把这个0变成1
f[i+][][][]+=f[i][x][y][z]*(-p);//这里把9位以后的1算作多少都没关系,因为反正最后统计的是0
}
} else {
f[i+][x+][y][z]+=f[i][x][y][z]*(-p);
}
}
}
}
}
//计算期望
double ans=;
for(register int x=;x<=;x++) {
for(register int y=;y<;y++) {
for(register int z=;z<;z++) {
int cnt=,tmp=x;
while(cnt<&&!(tmp&)) {
cnt++;
tmp>>=;
}
if(!y&&cnt==) cnt+=z;
ans+=f[k][x][y][z]*cnt;
}
}
}
printf("%.13f\n",ans);
return ;
}
[CodeForces-441E]Valera and Number的更多相关文章
- CodeForces - 441E:Valera and Number (DP&数学期望&二进制)
Valera is a coder. Recently he wrote a funny program. The pseudo code for this program is given belo ...
- CF 441E Valera and Number
CF 441E Description 一共执行\(k\)次,每次有\(p\%\)把\(x * 2\),有\((100 - p)\%\)把\(x + 1\).问二进制下\(x\)末尾期望\(0\)的个 ...
- Codeforces 441C Valera and Tubes
题目链接:Codeforces 441C Valera and Tubes 没看到r >= 2一直错.让前几个管子占用2个格子.最后一个把剩下的都占用了.假设问题有解.这样做一定有解.其它策略就 ...
- 【Codeforces441E】Valera and Number [DP]
Valera and Number Time Limit: 20 Sec Memory Limit: 512 MB Description Input Output Sample Input 5 3 ...
- CodeForces - 369E Valera and Queries(树状数组)
CodeForces - 369E Valera and Queries 题目大意:给出n个线段(线段的左端点和右端点坐标)和m个查询,每个查询有cnt个点,要求给出有多少条线段包含至少其中一个点. ...
- dp --- Codeforces 245H :Queries for Number of Palindromes
Queries for Number of Palindromes Problem's Link: http://codeforces.com/problemset/problem/245/H M ...
- Educational Codeforces Round 11 D. Number of Parallelograms 暴力
D. Number of Parallelograms 题目连接: http://www.codeforces.com/contest/660/problem/D Description You ar ...
- Codeforces 980 E. The Number Games
\(>Codeforces \space 980 E. The Number Games<\) 题目大意 : 有一棵点数为 \(n\) 的数,第 \(i\) 个点的点权是 \(2^i\) ...
- Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS
G. Xor-matic Number of the Graph http://codeforces.com/problemset/problem/724/G 题意:给你一张无向图.定义一个无序三元组 ...
- codeforces 441B. Valera and Fruits 解题报告
题目链接:http://codeforces.com/problemset/problem/441/B 题目意思:有 n 棵fruit trees,每课水果树有两个参数描述:水果成熟的时间和这棵树上水 ...
随机推荐
- js常见易错点
原文:http://www.jianshu.com/p/1c77853d4f01 前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函 ...
- bzoj 3522 tree-dp 暴力
首先我们知道,这个题可以N^2的做,我们先确定一个根,然后讨论下情况,合法的三个点只可能有三种情况,第一种是三个点有相同的lca,这种情况我们可以用tree-dp来解决,用dis[i][j]表示i为根 ...
- 设计模式之Proxy
设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则) 为什么要使用Proxy? 1.授权机制 不同级别的用户对同一对象拥有不同的访问权利. 2.某个客户端不 ...
- 安装node-sass的正确姿势【转】
安装 node-sass 的时候总是会各种不成功,今天我琢磨了一会儿总算知道要怎么解决了. 首先要知道的是,安装 node-sass 时在 node scripts/install 阶段会从 gith ...
- tomcat+java的web程序持续占cpu高问题调试【转】
转自 tomcat+java的web程序持续占cpu问题调试 - 像风一样的自由 - CSDN博客http://blog.csdn.net/five3/article/details/28416771 ...
- [MySQL] gap lock/next-key lock浅析
当InnoDB在判断行锁是否冲突的时候, 除了最基本的IS/IX/S/X锁的冲突判断意外, InnoDB还将锁细分为如下几种子类型: record lock (RK) 记录锁, 仅仅锁住索引记录的一行 ...
- python 异常知识点
raise from python 在3.0 之后引入了raise from 表达式: raise exception from otherexception 当使用该语法时,第二个表达式指定了另一个 ...
- LINUX下解决netstat查看TIME_WAIT状态过多问题(转)
原文连接:www.itokit.com/2012/0516/73950.html # netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c 16 CLOSIN ...
- html清屏 meta http-equiv="refresh" content="3">
<meta http-equiv="refresh" content="3"> 什么意思? <meta http-equiv="re ...
- 网络管理 SNMP基础知识
SNMP Agent快速开发 网友:SmileWolf 发布于: 2007.08.02 16:06 (共有条评论) 查看评论 | 我要评论 摘自 http:/ ...