【HDU4652】Dice(数学期望,动态规划)

题面

Vjudge

有一个\(m\)面骰子

询问,连续出现\(n\)个相同的时候停止的期望

连续出现\(n\)个不同的时候停止的期望

题解

考虑两种分开询问来算。

第一种:

设\(f[i]\)表示已经有连续的\(i\)个相同时,到达目标状态的期望。

\[f[i]=\frac{1}{m}f[i+1]+\frac{m-1}{m}f[1]+1
\]

相邻两项作差,得到

\[m(f[i+1]-f[i])=f[i+2]-f[i+1]
\]

按照顺序列出来

\(f[0]-f[1]=1\)

\(f[1]-f[2]=m\)

\(f[2]-f[3]=m^2\)

...

\(f[n-1]-f[n]=m^{n-1}\)

将所有式子相加起来

\(f[0]-f[n]=\frac{m^n-1}{1-m}\)

\(f[n]=0\),这样就知道了\(f[0]\)

所以

\[Ans=f[0]=\frac{m^n-1}{1-m}
\]


考虑第二种询问

设\(f[i]\)表示连续\(i\)个不同的数字,到达目标状态的期望

\[f[i]=\frac{m-i}{m}f[i+1]+\frac{f[1]+f[2]+f[3]+...f[i-1]+f[i]}{m}
\]

还是相邻两项作差让后相加,算出答案

\[Ans=\sum_{i=0}^{n-1}\prod_{j=0}^{i}\frac{m}{m-j}
\]

#include<cstdio>
#include<cmath>
using namespace std;
double Solve1(int m,int n){return (pow(m,n)-1.0)/(m-1.0);}
double Solve2(int m,int n)
{
double ret=1,d=1;
for(register int j=1;j<n;++j)d=1.0*m/(m-j)*d,ret+=d;
return ret;
}
int main()
{
register int T,opt,n,m;
while(scanf("%d",&T)!=EOF)while(T--)
{
scanf("%d%d%d",&opt,&m,&n);
printf("%.9lf\n",!opt?Solve1(m,n):Solve2(m,n));
}
}

【HDU4652】Dice(数学期望,动态规划)的更多相关文章

  1. SP1026 FAVDICE - Favorite Dice 数学期望

    题目描述: 一个n面的骰子,求期望掷几次能使得每一面都被掷到. 题解:先谈一下期望DP. 一般地,如果终止状态固定,我们都会选择逆序计算. 很多题目如果顺序计算会出现有分母为 0 的情况,而逆序计算中 ...

  2. 【BZOJ2134】单位错选(数学期望,动态规划)

    [BZOJ2134]单位错选(数学期望,动态规划) 题面 BZOJ 题解 单独考虑相邻的两道题目的概率就好了 没了呀.. #include<iostream> #include<cs ...

  3. 【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)

    [BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include< ...

  4. 【Luogu1291】百事世界杯之旅(动态规划,数学期望)

    [Luogu1291]百事世界杯之旅(动态规划,数学期望) 题面 洛谷 题解 设\(f[i]\)表示已经集齐了\(i\)个名字的期望 现在有两种方法: 先说我自己的: \[f[i]=f[i-1]+1+ ...

  5. 【BZOJ4872】分手是祝愿(动态规划,数学期望)

    [BZOJ4872]分手是祝愿(动态规划,数学期望) 题面 BZOJ 题解 对于一个状态,如何求解当前的最短步数? 从大到小枚举,每次把最大的没有关掉的灯关掉 暴力枚举因数关就好 假设我们知道了当前至 ...

  6. 【BZOJ1076】奖励关(动态规划,数学期望)

    [BZOJ1076]奖励关(动态规划,数学期望) 题面 懒,粘地址 题解 我也是看了题解才会做 看着数据范围,很容易想到状压 然后,设\(f[i][j]\)表示当前第\(i\)轮,状态为\(j\)的期 ...

  7. HDU 4586 Play the Dice(数学期望)

    Play the Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  8. 【HDU4336】Card Collector (动态规划,数学期望)

    [HDU4336]Card Collector (动态规划,数学期望) 题面 Vjudge 题解 设\(f[i]\)表示状态\(i\)到达目标状态的期望 \(f[i]=(\sum f[j]*p[j]+ ...

  9. 动态规划之经典数学期望和概率DP

    起因:在一场训练赛上.有这么一题没做出来. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6829 题目大意:有三个人,他们分别有\(X,Y,Z\)块钱 ...

随机推荐

  1. WebAPI学习笔记

    WebAPI WebApi是添加到Asp.Net平台的一个新特性,可以快速的创建Web服务,并对客户端提供HTTP的API调用接口 WebApi是建立在MVC框架基础之上,但不属于MVC的一部分. 序 ...

  2. Tp框架之命名空间

    命名空间,相当于虚拟目录 实现自动加载类的机制 初始命名空间:Library文件夹 初始命名空间下面有很多根命名空间: 1.Library里面的文件夹 2.APP的模块文件夹 在tp框架中,只有这两个 ...

  3. Supervisor4.0和python2.7的crit问题,导致python进程阻塞

    1.问题原因 Supervisor高版本在守护python2.7的服务时,会crit并报错并倒至进程阻塞(python进程存在,但不在运行)的问题,一般会和字符集有关系 <type 'excep ...

  4. cocos2dx2.0 帧动画的创建和播放过程 深入分析

    一.帧动画的创建过程帧动画的实现有四个不可或缺的类,如下:1.CCSpriteFrame:精灵帧信息.存储帧动画的每一帧的纹理基本信息. class CC_DLL CCSpriteFrame : pu ...

  5. Windows网络通信(一):socket同步编程

    网络通信常用API 1. WSAStartup用于初始化WinSock环境 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); ...

  6. java 通过内存映射文件来提高IO读取文件性能

    MappedByteBuffer out = new RandomAccessFile("src/demo20/test.dat", "rw"). getCha ...

  7. Python接口测试实战1(下)- 接口测试工具的使用

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  8. Java泛型理解

    Java泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.当需要使用某一种算法时,又无法具体算法的数据类型,或者想指定类型值的上限或下限,那么这时就需要Java泛型来大显身手 ...

  9. 415. Valid Palindrome【LintCode java】

    Description Given a string, determine if it is a palindrome, considering only alphanumeric character ...

  10. redis 为什么快

    redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大. 不过,因为一般的内存操作都是简单存取操作,线程占用时间相对较短,主要问题在io上,因此,redis这种模型是 ...