hdu 4870(概率Dp)

首先我们以50分为一单位,于是赢一次得1分输一次扣2分,由于每次都用小号打,所以容易观察出最后达到20分时应该分别为20分和19分。我们设dp[i]为i到i+1分的期望步数。则dp[i]=p*1+(1-p)*(dp[i-2]+dp[i-1]+dp[i]+1),前者是赢的期望,后者由于输了2分,所以变成i+1分时需要从i-2->i-1->i->i+1,就是dp[i-2]+dp[i-1]+dp[i]+1了,f[i][j]表示大号为i分小号为j分的步数期望,Dp即可

代码https://github.com/mlz000/hdu/blob/master/4870(%E6%A6%82%E7%8E%87Dp).cpp

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=25;
double dp[N],f[N][N];
int main(){
	double p;
	while(~scanf("%lf",&p)){
		dp[0]=1.0/p,dp[1]=1.0/p+(1.0-p)/p*dp[0];
		for(int i=2;i<=19;++i)	dp[i]=1.0/p+(1.0-p)/p*(dp[i-2]+dp[i-1]);
		f[1][0]=dp[0],f[1][1]=f[1][0]+dp[0];
		for(int i=1;i<=19;++i){
			f[i+1][i]=f[i][i]+dp[i];
			f[i+1][i+1]=f[i+1][i]+dp[i];
		}
		printf("%.10lf\n",f[20][19]);
	}
	return 0;
}

hdu 4870(概率Dp)

时间: 2024-12-19 16:47:20

hdu 4870(概率Dp)的相关文章

hdu 3853 概率DP 简单

http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意:有R*C个格子,一个家伙要从(0,0)走到(R-1,C-1) 每次只有三次方向,分别是不动,向下,向右,告诉你这三个方向的概率,以及每走一步需要耗费两个能量,问你走到终点所需要耗费能量的数学期望: 回头再推次,思想跟以前的做过的类似 注意点:分母为0的处理 #include <cstdio> #include <cstring> #include <algorithm>

HDU 3853 概率dp

LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 2337    Accepted Submission(s): 951 Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl).Homura wants to help he

hdu 4405 概率dp 2012年金华亚洲网络赛--虽然水,但是是自己独立做的第一道概率dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4405 e[i]:当前在位置i还需要走的步数期望 受刘汝佳的AC自动机那个后缀链接写法的启发,我的x[i]通过逆序算出来连续有"flight line "的时候,能到达的最远距离, rep(i,0,m) { scanf("%d%d",&xx,&yy); x[xx]=yy; } for(int i=n;i>=0;i--) if(x[i]!=-1 &

hdu 4035 概率DP 成都网赛

http://acm.hdu.edu.cn/showproblem.php?pid=4035 学到: 1.先判断是不是树,其实凡是有图的感觉的,都看边数==点数-1是不是成立 2.树有时候区分老子跟孩子还是有必要的,这道题就是,不过是在dfs的时候,传参数的时候多加个表示父节点的参数而已 3.一定注意,概率DP对精度真的要求很高 开始的时候写1e-8,WA了好几发,改了1e-10  AC 4.注意分母为0的可能的时候加上判断 讲的很详细的题解:http://blog.csdn.net/morga

HDU 4405 (概率DP)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 题目大意:飞行棋.如果格子不是飞行点,扔骰子前进.否则直接飞到目标点.每个格子是唯一的飞行起点,但不是唯一的飞行终点.问到达或越过终点的扔骰子期望数. 解题思路: 一个告诉你求期望应该逆推而不是正推的题. 如果正推的话,对于一个点i,如果是飞行终点,那么势必要枚举到达它的飞行起点,起点有多个,每个起点概率不一定相等,期望怎么求? 如果逆推(终点变成起点)的话,对于一个点i,如果是飞行起点,那

hdu 4035 概率dp

太吊了 1 /* 2 HDU 4035 3 4 dp求期望的题. 5 题意: 6 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 7 从结点1出发,开始走,在每个结点i都有3种可能: 8 1.被杀死,回到结点1处(概率为ki) 9 2.找到出口,走出迷宫 (概率为ei) 10 3.和该点相连有m条边,随机走一条 11 求:走出迷宫所要走的边数的期望值. 12 13 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望.E[1]即为所求. 14 15 叶子结点: 16 E[i] =

hdu 5001 概率DP 图上的DP

http://acm.hdu.edu.cn/showproblem.php?pid=5001 当时一看是图上的就跪了 不敢写,也没退出来DP方程 感觉区域赛的题  一则有一个点难以想到 二则就是编码有点难度. 这个题: 我一直的思路就是1-能到达i的概率 就是不能到达i的概率,然后三维方程巴拉巴拉,,,,把自己搞迷糊 正确做法: dp[k][j]   经过j步到达k点 并且不经过i点的概率 这么设的原因是,就可以求不能到达i点的概率了.   不能到达i点的概率就是segma(dp[v][j-1]

hdu 4336 概率dp

题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率为p1,p2,````pN.每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 转移方程: f[s] = 1 + ((1-segma{ p[i] })f[s]) + (segma{ p[j]*f[s] }) + (segma{ p[k]*f[s|(1<<k)] }) 移项可得: segma{ p[i] }f[s] = 1 + segma{ p[i]*f[s|(1<<i) },

hdu 5378 概率dp 逆元

一棵n个节点的树.对其节点进行标号(1~n).求恰好存在k个节点的标号是其节点所在子树的最大值的方案数. 首先,总共有n!中标号方案.而如果求出n个节点中出现k个上述节点的概率p.方案数等于n!* p. dp[i][j] 表示钱i个节点有j个上述节点的概率.转移较容易推出. dp[i][j] = dp[i-1][j] * (c[i]-1) / c[i] + dp[i-1][j-1] * (1 / c[i]);    c[i] 第i个节点的子树的节点数. 然后,double肯定是不能过的.于是傻傻