[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\) ...
随机推荐
- poj2891(线性同余方程组)
一个exgcd解决一个线性同余问题,多个exgcd解决线性同余方程组. Strange Way to Express Integers Time Limit: 1000MS Memory Limi ...
- 使用ILookup<TKey, TElement> 接口查找集合
public class Program { public static void Main() { // 创建一个放入ilookup数据结构的School清单. List<School> ...
- UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)
今天使用MySQLdb往MySQL插入中文数据遇到一个异常: UnicodeEncodeError: 'latin-1' codec can't encode characters in positi ...
- 物理cpu和逻辑cpu
1 物理cpu 插槽里面实际插入的cpu的个数. 通过不重复的physical id可以获取实际的物理cpu的个数. 2 逻辑cpu cat /proc/info processor 1 proces ...
- cocos2dx使用cocostudio导出的animation
local uilocal function createLayerUI() if not ui then ui=cc.Layer:create(); createLayerUI=nil; end r ...
- iOS线程浅析
一.线程概述 1. iOS里面的线程按种类可分为同步线程和异步线程.同步线程指调用同步线程的地方必须等到同步线程运行完成才干够继续向下运行.而调用异步线程的地方则在运行完调用异步线程的语句后就能够继续 ...
- MyEclipse2014新增bug,尝鲜的朋友需注意NotFoundException: org.springframework.web.context.ContextLoaderListener
事实上标题后面加上这个异常信息并不合适,可是为了方便和我遇到相同问题的童鞋搜到这篇文章.我不得不这样写啦. 这个异常和你的程序没有关系,假设你没有忘记增加spring Jar包的话,这是fucking ...
- Tensorflow 初级教程(二)
一.Tensorflow 扩展功能 1.自动求导 2.子图的执行 3.计算图控制流 4.队列/容器 Tensorflow 自动求导 当计算tensor C关于tensor W的梯度时,会先寻找从W到C ...
- linux shell 字符串操作详解(获取长度、查找,替换)
在做shell批处理程序时候,常常会涉及到字符串相关操作.有许多命令语句,如:awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,大家知道,使用内部操作符会省 ...
- java深入探究05
通讯录小程序 需求说明: 功能: 添加联系人 修改联系人 删除联系人 查询所有联系人 要求: console控制 数据保存在xml 1.创建联系人类 /** * 联系人实体对象 * @author A ...