hdu 4652 Dice 概率DP
思路:
dp[i]表示当前在已经投掷出i个不相同/相同这个状态时期望还需要投掷多少次
对于第一种情况有:
dp[0] = 1+dp[1]
dp[1] = 1+((m-1)*dp[1]+dp[2])/m
dp[i] = 1+((m-1)*dp[1]+dp[i+1])/m
……
dp[n] = 0
可以得到:dp[n-1]=m*dp[n]+1
所以dp[0]=(m^n-1)/(m-1)也即是第一种的答案!
对于第二种情况有:
dp[0]=1+dp[1]
dp[1]=1+(dp[1]+(m-1)*dp[2])/m
dp[i]=1+(dp[1]+……+dp[i]+(m-i)*dp[i+1])/m
……
dp[n]=0
令d[i]=dp[i]-dp[i+1]
则有d[i]=m*dp[i-1]/(m-i),d[0]=1
所以dp[0]=∑d[i]也即是第二种的答案!!
代码如下:
- #include<stdio.h>
- #include<cmath>
- double sum,d;
- int pows(int a,int b){
- int ans=;
- while(b){
- if(b&) ans*=a;
- b>>=;
- a*=a;
- }
- return ans;
- }
- int main(){
- int q,n,m,i,j,t;
- while(scanf("%d",&t)!=EOF){
- for(i=;i<t;i++){
- scanf("%d%d%d",&q,&m,&n);
- if(q==) printf("%.9lf\n",(pows(m,n)-1.0)/(m-1.0));
- else{
- sum=d=1.0;
- for(j=;j<n;j++){
- d=1.0*m/(m-j)*d;
- sum+=d;
- }
- printf("%.9lf\n",sum);
- }
- }
- }
- return ;
- }
hdu 4652 Dice 概率DP的更多相关文章
- HDU 4599 Dice (概率DP+数学+快速幂)
题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...
- hdu 4599 Dice 概率DP
思路: 1.求f[n];dp[i]表示i个连续相同时的期望 则 dp[0]=1+dp[1] dp[1]=1+(5dp[1]+dp[2])/6 …… dp[i]=1+(5dp[1 ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- Throwing Dice(概率dp)
C - Throwing Dice Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Lig ...
- HDU - 1099 - Lottery - 概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...
- HDU 4405 【概率dp】
题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...
- HDU 4576 Robot(概率dp)
题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...
- [HDU 4089]Activation[概率DP]
题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...
- hdu 3853 LOOPS 概率DP
简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...
随机推荐
- Swift中的注释以及表达式
Swift程序有两类注释:单行注释(//)和多行注释(/*...*/).注释方法与C.C++和Objective-C语言都是类似的,下面详细介绍一下.1. 单行注释单行注释可以注释整行或者一行中的一部 ...
- WebResponse 取出全国省市区的邮编
WebResponse用法(根据省市区地址查询其邮编): class Program { static string url { get; set; } static void Main(string ...
- 20141014--判断语句switch case
1. switch case break(跳出) 距离break 最近的大括号,跳出这个大括号,执行大括号之后的命令 switch case 必须与 break 一同使用. 分别输入月份 几号 输出是 ...
- host文件的作用和介绍
在Window系统中有个Hosts文件(没有后缀名)在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\E ...
- Git 技巧小结
本篇博客内的内容,主要摘抄自 廖雪峰的 Git教程,这篇教程写的通俗易懂,步步深入,是我见过最棒的Git教程了.下面的全部内容,摘抄自此教程,有需要的朋友,请看完整版. Git版本库 git在创建版本 ...
- IE下不支持option的onclick事件
<select> <option onclick="test('www.hao123.com')"value="www.hao123.com" ...
- Delphi Variant oleVariant
The OleVariant type exists on both the Windows and Linux platforms. The main difference between Vari ...
- 使用公钥登录SSL
在本地生成密钥对 ssh-keygen -t rsa 如果不想设置密码,可以直接点击回车. 如果你想使用DSA可以用-t DSA替换. 确保远程计算机上用户目录下有.ssh目录 确保你的连接服务器上的 ...
- AJAX 小实例(转摘)
最近老总提了一个小功能,在搜索网吧列表的时候加上网吧所属代理商这个条件,原有的搜索条件是一个地区二级联动,现在需要根据不同的地区显示不同的代理商集合.即在触发地区下拉框的onchange事件时,代理商 ...
- 几种解析xml方式的比较
1: DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加 ...