//ssworld VS DDD 两个人有血量值 hp1 , hp2 

//两人掷骰子得到每一点的概率已知

//ssword赢的概率

//dp[i][j]  表示有第一个人血量为i。第二个人的血量为j第一个人赢的概率

//第一个人赢,第二个人赢 , 平局的概率为p1 , p2 , p3

//那么有dp[i][j] = p2*dp[i-1][j] + p1*dp[i][j-1] + p3*dp[i][j]

//整理可得dp[i][j] = p2/(1-p3)*dp[i-1][j] + p1/(1-p3)*dp[i][j-1] 

//特别坑的是它的血量是倒着输入的

#include<cstdio>

#include<cstring>

#include<iostream>

using namespace std ;

const int maxn = 2010 ;

double dp[2][maxn] ;

double p[2][6] ;

int main()

{

    //freopen("in.txt" ,"r" , stdin) ;

    //freopen("out.txt" ,"w" , stdout) ;

    int n , m ;

    while(~scanf("%d%d"  ,&m , &n))

    {

        double p3 = 0 ,p1 = 0 , p2 = 0;

        for(int i = 0;i < 2;i++)

         for(int j = 0 ;j < 6 ; j++)

             scanf("%lf" , &p[i][j]) ;

        for(int i = 0;i < 6;i++)

        {

            for(int j = 0;j < i ;j++)

            p1+= p[0][i]*p[1][j] ;

            for(int j = i+1 ;j < 6;j++)

            p2 += p[0][i]*p[1][j] ;

        }

        p3 = 1 - p1 - p2 ;

        if(p3 == 1){puts("0");continue;}

        memset(dp , 0 , sizeof(dp)) ;

        dp[0][0] = dp[1][0] = 1;

        for(int i = 1;i <= n ;i++)

          for(int j = 1;j <= m;j++)

          dp[i%2][j] = p2/(1-p3)*dp[(i-1)%2][j] + p1/(1-p3)*dp[i%2][j-1] ;

        printf("%.6lf\n" , dp[n%2][m]) ;

    }

    return  0 ;

}

hdu3076ssworld VS DDD 概率dp的更多相关文章

  1. hdu3076--ssworld VS DDD(概率dp第三弹,求概率)

    ssworld VS DDD Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  2. hdu 3076 ssworld VS DDD (概率dp)

    ///题意: /// A,B掷骰子,对于每一次点数大者胜,平为和,A先胜了m次A赢,B先胜了n次B赢. ///p1表示a赢,p2表示b赢,p=1-p1-p2表示平局 ///a赢得概率 比一次p1 两次 ...

  3. HDU 3076 ssworld VS DDD 概率dp,无穷级数,oj错误题目 难度:2

    http://acm.hdu.edu.cn/showproblem.php?pid=3076 不可思议的题目,总之血量越少胜率越高,所以读取时把两人的血量交换一下 明显每一轮的胜率和负率都是固定的,所 ...

  4. HDU 3076:ssworld VS DDD(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=3076 ssworld VS DDD Problem Description   One day, s ...

  5. Codeforces 28C [概率DP]

    /* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...

  6. HDU 4405 Aeroplane chess (概率DP)

    题意:你从0开始,要跳到 n 这个位置,如果当前位置是一个飞行点,那么可以跳过去,要不然就只能掷骰子,问你要掷的次数数学期望,到达或者超过n. 析:概率DP,dp[i] 表示从 i  这个位置到达 n ...

  7. POJ 2096 Collecting Bugs (概率DP)

    题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...

  8. POJ 2151 Check the difficulty of problems (概率DP)

    题意:ACM比赛中,共M道题,T个队,pij表示第i队解出第j题的概率 ,求每队至少解出一题且冠军队至少解出N道题的概率. 析:概率DP,dp[i][j][k] 表示第 i 个队伍,前 j 个题,解出 ...

  9. 概率DP light oj 1030

    t组数据 n块黄金 到这里就捡起来 出发点1 到n结束  点+位置>n 重掷一次 dp[i] 代表到这里的概率 dp[i]=(dp[i-1]+dp[i-2]... )/6  如果满6个的话 否则 ...

随机推荐

  1. PAT Basic 1027

    1027 打印沙漏 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行 ...

  2. Python3 中 configparser 模块解析配置的用法详解

    configparser 简介 configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近.Python2.x 中名为 ConfigParser,3.x 已 ...

  3. 【11】把 GitHub 当 CMS 用

    把 GitHub 当 CMS 用 你的网站需要显示一些文字,但是你还不想直接放在 HTML 里面,那你可以把 GitHub 作为你储存内容的一个地方. 这样,就可以让任何一个非程序员通过修改 Mark ...

  4. JSON Extractor/jp@gc - JSON Path Extractor 举例

    测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 {"status_code":200,"message" ...

  5. Python --链接Mongodb

    # -*- coding: UTF-8 -*- from pymongo import MongoClient # 数据库连接 class MongoDB(object): def __init__( ...

  6. ASP.NET(五):ASP.net实现真分页显示数据

    导读:在上篇文章中,介绍了用假分页实现数据的分页显示 ,而避免了去拖动滚动条.但,假分页在分页的同时,其实是拖垮了查询效率的.每一次分页都得重新查询一遍数据,那么有没有方法可以同时兼顾效率和分页呢,那 ...

  7. Oracle 查看 使用 UNDO 段的事务脚本

    查看oracle undo segment段的信息: SELECT T1.USN, T2.NAME, T1.STATUS, T1.LATCH, T1.EXTENTS, T1.WRAPS, T1.EXT ...

  8. 使用镜像源安装EASY_INSTALL和PIP教程

    使用easy_install和pip可以让python的模块的安装和管理变得非常方便.我一般在新的Linux系统上,先easy_install pip然后就用pip安装其他的模块了. 不过,在国内用官 ...

  9. [配置Cordova环境] [Alfred使用手册]

    Mac神器 Alfred使用手册http://www.tuicool.com/articles/YJJv2i 配置Cordova环境 1.到nodejs官网下载最新版本,安装pkg文件 2.终端运行 ...

  10. 自己写的java返回结果集封装

    import java.io.Serializable; import com.fasterxml.jackson.core.JsonProcessingException; import com.f ...