[HDU4652]Dice
题意
\(m\)面骰子,求
1.连续出现\(n\)个相同的停止;
2.连续出现\(n\)个不同的停止
的期望投骰子次数。
\(n,m ≤ 10^6\)
sol
首先考虑一个转移式子吧。
设\(f_i,g_i\)分别表示已经连续出现了\(i\)个相同/不同时的期望步数:
\]
(只有\(\frac 1m\)的概率继续投出对应的颜色,否则就前功尽弃,从\(1\)重新开始)
\]
(如果投出了与之前相同的颜色,每种颜色各有\(\frac 1m\)的概率出现,所以各有\(\frac 1m\)的概率退回到\(1..i\)的状态)
边界状态\(f_n=g_n=0\),我们的目标是求\(f_0,g_0\)。
考虑怎么解上面那个东西吧,这里我们用一种很经典的方法——错位相减。
先做\(f_i\)吧。
把\(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=\sum_{i=0}^{n-1}m^i=\frac{1-m^n}{1-m}\)
然后是\(g_i\)。
同样把\(g_{i+1}\)对应的式子写出来:
\]
同样两式相减:
\]
同样还是根据\(g_0-g_1=1\)的性质可知:
\(g_1-g_2=\frac m{m-1},g_2-g_3=\frac{m^2}{(m-1)(m-2)}......\)
线性递推即可。
时间复杂度\(O(Tn)\)
code
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int T;
while (scanf("%d",&T)!=EOF)
while (T--)
{
int ty,m,n;scanf("%d%d%d",&ty,&m,&n);
if (!ty)
printf("%.10lf\n",(pow(m,n)-1)/(m-1));
else
{
double ans=0,last=1;
for (int i=1;i<=n;++i)
ans+=last,last*=1.0*m/(m-i);
printf("%.10lf\n",ans);
}
}
return 0;
}
[HDU4652]Dice的更多相关文章
- [笔记] 期望概率DP
线性高斯消元 模型概述 转移不是 DAG 的期望 DP. 成环的转移有特殊性质,如:只总父亲/根/儿子转移,只从左右转移-- 处理方式 以只从父亲和儿子转移的期望 DP 为例: \[f(x)=p\cd ...
- 【HDU4652】Dice(数学期望,动态规划)
[HDU4652]Dice(数学期望,动态规划) 题面 Vjudge 有一个\(m\)面骰子 询问,连续出现\(n\)个相同的时候停止的期望 连续出现\(n\)个不同的时候停止的期望 题解 考虑两种分 ...
- HDU4652:Dice
题面 传送门 题意 \(m\)面的骰子 求连续出现\(n\)个相同面的期望次数 或者 求连续出现\(n\)个不同面的期望次数 Sol 设\(f[i]\)表示已经出现了\(i\)~\(n\)这些面相同的 ...
- HDOJ 4652 Dice
期望DP +数学推导 Dice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 三种renderman规范引擎的dice对比
次表面做的有些烦躁,既然如此,索性先记一下前一阵比较的PIXIE.3delight.prman的dice方式. 研究过reyes的人都知道dice,简而言之,就是为了生成高质量高精度的图片(电影CG) ...
- LightOJ 1248 Dice (III) 概率
Description Given a dice with n sides, you have to find the expected number of times you have to thr ...
- hdu 4586 Play the Dice 概率推导题
A - Play the DiceTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- 概率 Gym 100502D Dice Game
题目传送门 /* 题意:两个人各掷两个骰子,给出每个骰子的最小值和最大值,其余值连续分布 问两人投掷,胜利的概率谁大 数据小,用4个for 把所有的可能性都枚举一遍,统计每一次是谁胜利 还有更简单的做 ...
- HDU 5955 Guessing the Dice Roll
HDU 5955 Guessing the Dice Roll 2016 ACM/ICPC 亚洲区沈阳站 题意 有\(N\le 10\)个人,每个猜一个长度为\(L \le 10\)的由\(1-6\) ...
随机推荐
- excel生成随机数
这个功能可以通过excel来实现,操作步骤如下: 1.新建一个excel,并打开 2.选中一个单元格,在单元格中填写: =20*RAND()+30 确定之后就会发现已经 ...
- 关于KMP算法的感想
今天,看了KMP,首先是在网上看的,看了很久没看懂,有很多思想,很多next的推导,就相当于很多的版本,后来,去看了<<大话数据结构>>这本书,才看懂,这KMP的神奇之处,这本 ...
- tmpfs(转)
什么是tmpfs tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的内存或swap分区来存储文件. 实现原理:基于VM子系统 tmpfs是基于Linux的虚拟内存管 ...
- 最简单的php验证码
<?php session_start(); // Settings: You can customize the captcha here $image_width = 120; $image ...
- mysql(root用户密码设置)
root密码重置 修改root用户的密码: /*登录mysql*/ mysql -uroot -p123 /*切换数据库*/ use mysql /*修改root用户的密码*/ update user ...
- ggplot2绘图系统
ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系统 .在ggplot2中,图是采用串联起来(+)号函数创建的.详细内容参见<ggplot2:数据分析与图形艺术>,这里只简要 ...
- python基础14 ---函数模块4(configparser模块)
configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的c ...
- Python:笔记(1)——基础语法
Python:笔记(1)——基础语法 我很抱歉有半年没有在博客园写过笔记了,客观因素有一些,但主观原因居多,再多的谴责和批判也都于事无补,我们能做的就是重振旗鼓,继续出发! ——写在Python之前 ...
- 三维bfs
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- scp的用法
scp是有Security的文件copy,基于ssh登录.命令基本格式:scp [OPTIONS] file_source file_target OPTIONS:-v 和大多数 linux 命令中的 ...