http://acm.hdu.edu.cn/showproblem.php?pid=4050

题意:

现在主角站在0处,需要到达大于n的位置

主角要进入的格子有三种状态:

0. 不能进入

1. 能进入左脚,下一步出右脚

2. 能进入右脚,下一步出左脚

3. 两只脚都能进入,而且下一步迈出左右脚都可.

也就是说,如果只有1,2种状态的格子,那么主角只能重复左脚-右脚-左脚...或者右脚-左脚-右脚

但是有了状态为3的格子,就能够左脚-左脚-左脚这样走路

设e[i][sta]为主角在编号为i的方格状态为sta的概率,sta为1,2,3,分别代表踏入的是下一步右脚,下一步左脚,两只脚都可以的格子

并设kp1[i+a][i+j]从i+a开始到i+j-1右脚无法踏入的概率,kp2[i+a][i+j]从i+a开始到i+j-1左脚无法踏入的概率,kp3[i+a][i+j]为两只脚都无法踏入概率,

则:
            e[i][1]+=(e[i+j][2]+1)*kp1*p2[i+j]+(e[i+j][3]+1)*kp1*p3[i+j];
            e[i][2]+=(e[i+j][1]+1)*kp2*p1[i+j]+(e[i+j][3]+1)*kp2*p3[i+j];
            e[i][3]+=(e[i+j][1]+1)*kp3*p1[i+j]+(e[i+j][2]+1)*kp3*p2[i+j]+(e[i+j][3]+1)*kp3*p3[i+j];

明显e[0][3]为答案

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=2e3+;
const double eps=1e-;
int n,a,b;
double p0[maxn],p1[maxn],p2[maxn],p3[maxn];
double e[maxn][];
void calc(){
for(int i=n;i>=;i--){
memset(e[i],, sizeof e[i]);
double kp1=,kp2=,kp3=;
for(int j=a;j<=b;j++){
if(i+j>n){
e[i][]+=kp1;
e[i][]+=kp2;
e[i][]+=kp3;
break;
}
e[i][]+=(e[i+j][]+)*kp1*p2[i+j]+(e[i+j][]+)*kp1*p3[i+j];
e[i][]+=(e[i+j][]+)*kp2*p1[i+j]+(e[i+j][]+)*kp2*p3[i+j];
e[i][]+=(e[i+j][]+)*kp3*p1[i+j]+(e[i+j][]+)*kp3*p2[i+j]+(e[i+j][]+)*kp3*p3[i+j];
kp1*=(p0[i+j]+p1[i+j]);
kp2*=(p0[i+j]+p2[i+j]);
kp3*=(p0[i+j]);
} }
} int dcmp(double a,double b){
if(fabs(a-b)<=eps)return ;
return a>b?:-;
}
int main(){
int T;
scanf("%d",&T);
while(T--&&scanf("%d%d%d",&n,&a,&b)==){
for(int i=;i<=n;i++){
scanf("%lf%lf%lf%lf",p0+i,p1+i,p2+i,p3+i);
}
calc();
printf("%.8f\n",e[][]);
}
return ;
}

HDU 4050 wolf5x 概率dp 难度:1的更多相关文章

  1. HDU 4089 Activation 概率DP 难度:3

    http://acm.hdu.edu.cn/showproblem.php?pid=4089 这道题中一共有两个循环: 1.事件1 如果一直落在Activation failed事件上,那么就会重新继 ...

  2. HDU 4050 wolf5x(动态规划-概率DP)

    wolf5x Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. HDU 3853LOOPS(简单概率DP)

    HDU 3853    LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...

  4. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  5. HDU 4405 【概率dp】

    题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...

  6. HDU 4576 Robot(概率dp)

    题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...

  7. HDU 4599 Dice (概率DP+数学+快速幂)

    题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...

  8. [HDU 4089]Activation[概率DP]

    题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...

  9. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...

随机推荐

  1. FlashPlayer for Android

    1. Manually install on Android devices 教程地址:“https://helpx.adobe.com/flash-player/kb/installing-flas ...

  2. 2 CSS

    2 CSS CSS基础 html 在一个网页中负责的事情是一个页面的结构css(层叠样式表) 在一个网页中主要负责了页面的数据样式. 编写css代码的方式:     第一种: 在style标签中编写c ...

  3. Yii2.0 依赖注入(DI)和依赖注入容器的原理

    依赖注入和依赖注入容器 为了降低代码耦合程度,提高项目的可维护性,Yii采用多许多当下最流行又相对成熟的设计模式,包括了依赖注入(Denpdency Injection, DI)和服务定位器(Serv ...

  4. Nginx 启用gzip压缩

    1. 网页压缩 网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE.FireFox.Opera ...

  5. 串行通讯之.NET SerialPort

    第1章串行通讯之.NET SerialPort    2 1 枚举串口    2 2 打开/关闭串口    2 3 写数据    3 3.1 写二进制数据    3 3.2 写文本数据    4 4 ...

  6. C# 给软件加注册码功能

    为自己写的程序加一个注册功能吧.生成的机器号是根据CPU和硬盘号来的,根据自己的需求改成是否是随机生成. 代码直接粘贴到新建类覆盖原代码就能直接用了. using System; using Syst ...

  7. ma

    首页 第一项 上课 哈哈

  8. nginx配置 php 单入口

    location / {            root   html;            index  index.html index.htm index.php; if (!-e $requ ...

  9. css3 translate属性

    translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动):translateX(x)仅水平方向移动(X轴移动):translateY(Y)仅垂直方向移动(Y轴移动)默认都是从 ...

  10. poj----1330Nearest Common Ancestors(简单LCA)

    题目连接  http://poj.org/problem?id=1330 就是构建一棵树,然后问你两个节点之间最近的公共父节点是谁? 代码: /*Source Code Problem: 1330 U ...