Dice (HDU 4652)
题面:
m 面骰子,求
1. 出现n个连续相同的停止 ;
2. 出现n个连续不同的停止的期望次数。
(n, m ≤ 10^6 )
解析:
当然要先列式子啦。
用f[i](g[i])表示出现i个连续相同(不相同)的停止的期望次数。(期望=1/概率)
当然可秒看出f[1]=1,f[n]=0;
但我们不能顺推,因我们不能确定f[0]的值。那就逆推吧。
当前事件期望=1/概率×后继事件a+1/概率×后续事件b+1。(注意1代表当前情况能向所有已知方向拓展,而无障碍)
f[i]=1/m*f[i+1](加入与前面相同的数)+(m-1)/m*f[1](加入与前面不同的数)+1
g[i]=(m-i)/m*g[i+1]+1/m*(g[1]+g[2]+...+g[i])+1(注意到加入的数可与前面任一数相同)
然后推等比或等差。
f(x+2)-f(x+1)=m*(f(x+1)-f(x))
g(x+2)-g(x+1)=(m/(m-x-1))*(g(x+1)-g(x)) (ps:别直接乘这玩意儿,不开long double会掉精度)
以此计算即可。
代码
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define ll long long
#define re register
#define il inline
#define fp(i,a,b) for(re int i=a;i<=b;i++)
#define fq(i,a,b) for(re int i=a;i>=b;i--)
using namespace std;
int n,m,T,op;
il double calc1(re int m,re int n)
{
double ans=0,tmp=1;
fp(i,0,n-1) ans+=tmp,tmp*=m;
return ans;
}
il double calc2(re int m,re int n)
{
double ans=0,tmp=1;
fp(i,1,n) ans+=tmp,tmp=tmp*m/(m-i);
return ans;
}
int main()
{
while(scanf("%d",&T)!=EOF)
{
while(T--)
{
scanf("%d%d%d",&op,&m,&n);
if(!op) printf("%.6lf\n",calc1(m,n));
else printf("%.6lf\n",calc2(m,n));
}
}
return 0;
}
Dice (HDU 4652)的更多相关文章
- HDU 4652 Dice(期望)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意:一个m个面的筛子.两种询问:(1)平均抛多少次后使得最后n次的面完全一样:(2)平均抛多少 ...
- HDU 4652 Dice:期望dp(成环)【错位相减】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意: 给你一个有m个面的骰子. 两种询问: (1)"0 m n": “最后 ...
- HDU 4652 Dice (概率DP)
版权声明:欢迎关注我的博客,本文为博主[炒饭君]原创文章,未经博主同意不得转载 https://blog.csdn.net/a1061747415/article/details/36685493 D ...
- hdu 4652 Dice 概率DP
思路: dp[i]表示当前在已经投掷出i个不相同/相同这个状态时期望还需要投掷多少次 对于第一种情况有: dp[0] = 1+dp[1] dp[1] = 1+((m-1)*dp[1]+dp[2])/m ...
- HDU 4652 Dice
嘟嘟嘟 题目大意就是对于一个m面的骰子,回答这么两个问题: 1.求连续扔n次都是同一数字的期望次数. 2.求连续扔n次每一次数字都不相同的期望次数. 对于期望dp特别菜的我来说,这道题已经算是很难了. ...
- 概率dp专场
专题链接 第一题--poj3744 Scout YYF I 链接 (简单题) 算是递推题 如果直接推的话 会TLE 会发现 在两个长距离陷阱中间 很长一部分都是重复的 我用 a表示到达i-2步的概率 ...
- HDU 5955 Guessing the Dice Roll
HDU 5955 Guessing the Dice Roll 2016 ACM/ICPC 亚洲区沈阳站 题意 有\(N\le 10\)个人,每个猜一个长度为\(L \le 10\)的由\(1-6\) ...
- hdu 5955 Guessing the Dice Roll 【AC自动机+高斯消元】
hdu 5955 Guessing the Dice Roll [AC自动机+高斯消元] 题意:给出 n≤10 个长为 L≤10 的串,每次丢一个骰子,先出现的串赢,问获胜概率. 题解:裸的AC自动机 ...
- HDOJ 4652 Dice
期望DP +数学推导 Dice Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
随机推荐
- Ceres
sudo apt-get install liblapack-dev libsuitesparse-dev libcxspares3.1.2 libgflags-dev libggoogle-glog ...
- reversed()函数和sorted()函数
#reversed()反转排序,可对列表.元组.区间等进行排序 #练习1 a = range(10) a_list = [x for x in reversed(a)] print(a_list) # ...
- 母牛的故事(hdoj 2018,动态规划递推,详解)
有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Sample Input2450Sample Output246 / ...
- with一个对象,自动触发__enter__方法
class Foo(object): def __init__(self): pass def __enter__(self): print("__enter__") def __ ...
- python3支持excel读写
1.安装setuptools-17.0.tar.gz cmd 进入命令行 cd C:\Users\vivi\Desktop\pythonforexcel\setuptools-17.0\setupto ...
- phpcms 短信替换
后台表单向导文件路径: [/www/wwwroot/phpcms/phpcms/modules/formguide/templates/formguide_info_list.tpl.php] pub ...
- spring boot 的使用(一)
1. 启动spring-boot项目 mvn spring-boot:run cd target java -jar xxxx.jar xxxx代表生成的jar包
- Linear and Logistic Regression in TensorFlow
Linear and Logistic Regression in TensorFlow Graphs and sessions TF Ops: constants, variables, funct ...
- [BZOJ2594] [Wc2006]水管局长数据加强版(LCT + kruskal + 离线)
传送门 WC这个题真是丧心病狂啊,就是想学习一下怎么处理边权,给我来了这么一个破题! ORZ hzwer 临摹黄学长代码233 但还是复杂的一匹 理一下思路吧 题目大意:给定一个无向图,多次删除图中的 ...
- BZOJ3991 寻宝游戏 LCA 虚树 SET
5.26 T1:寻宝游戏 Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄, ...