#include<bits/stdc++.h>
using namespace std;
double c[110][110];
double g[110];
double dp[110][110];
int n,m,k;
void cnm()
{
    c[0][0]=1;
    for(int i=1;i<=100;i++)
    {
        c[i][0]=1;
        c[i][i]=1;
        for(int j=1;j<i;j++)
        {
            c[i][j]=c[i-1][j-1]+c[i-1][j];//组合数挑选硬币可能的数量
        }
    }
}
void gailv()//预处理i枚向上的概率
{
    g[0]=1;
    for(int i=1;i<=100;i++)
        g[i]=g[i-1]/2;
}
int main()
{
    cnm();
    gailv();
    int t;
    scanf("%d",&t);
    for(int i=1;i<=t;i++)
    {
        memset(dp,0,sizeof(dp));
        scanf("%d%d%d",&n,&m,&k);
        dp[0][0]=1;
        for(int j=0;j<m;j++)
        {
            for(int l=0;l<=n;l++)
            {
                for(int p=0;p<=k;p++)//抛k枚硬币有p枚向上
                {
                    if(k+l<=n)//原本向上的枚数加上这次向上的枚数不超过n
                    {
                        dp[j+1][l+p]+=dp[j][l]*c[k][p]*g[k];
                    }
                    else//超过n的话就会有已经向上的被重抛,导致向上的概率变低
                    {
                        dp[j+1][n+p-k]+=dp[j][l]*c[k][p]*g[k];
                    }
                }
            }
        }
        double sum=0;
        for(int i=1;i<=n;i++)
        {
            sum+=dp[m][i]*i;//概率乘上权值
        }
        printf("%.3f\n",sum);//切勿使用%.3lf
    }
    return 0;
}
 

2017乌鲁木齐区域赛A(动态规划,组合数学,期望)的更多相关文章

  1. 2017乌鲁木齐区域赛D题Fence Building-平面图的欧拉公式

    这个题B站上面有这题很完整的分析和证明,你实在不懂,可以看看这个视频  https://www.bilibili.com/video/av19849697?share_medium=android&a ...

  2. 2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)

    #include<bits/stdc++.h>using namespace std;const long long mod = 998244353;typedef const long ...

  3. 2017乌鲁木齐区域赛I(带权并查集)

    #include<bits/stdc++.h>using namespace std;int f[200010];//代表元long long rl[200010];//记rl[i]为结点 ...

  4. 2017西安区域赛A / UVALive - 8512 线段树维护线性基合并

    题意:给定\(a[1...n]\),\(Q\)次询问求\(A[L...R]\)的异或组合再或上\(K\)的最大值 本题是2017的西安区域赛A题,了解线性基之后你会发现这根本就是套路题.. 只要用线段 ...

  5. 2017 ICPC区域赛(西安站)--- J题 LOL(DP)

    题目链接 problem description 5 friends play LOL together . Every one should BAN one character and PICK o ...

  6. 2017 ACM区域赛(西安) 参赛流水账

    day 0: 周五, 鸽了概统课,早上和紫金港的几位小伙伴一起打车去萧山机场,从咸阳机场到西北工业大学坐了五十多个站的公交车,感觉身体被掏空.晚上在宾馆本来打算补之前训练的一个题,想想还是先花个十来分 ...

  7. hdu6229 Wandering Robots 2017沈阳区域赛M题 思维加map

    题目传送门 题目大意: 给出一张n*n的图,机器人在一秒钟内任一格子上都可以有五种操作,上下左右或者停顿,(不能出边界,不能碰到障碍物).题目给出k个障碍物,但保证没有障碍物的地方是强联通的,问经过无 ...

  8. HDU 6229 Wandering Robots(2017 沈阳区域赛 M题,结论)

    题目链接  HDU 6229 题意 在一个$N * N$的格子矩阵里,有一个机器人. 格子按照行和列标号,左上角的坐标为$(0, 0)$,右下角的坐标为$(N - 1, N - 1)$ 有一个机器人, ...

  9. 2017乌鲁木齐网络赛 j 题

    题目连接 : https://nanti.jisuanke.com/t/A1256 Life is a journey, and the road we travel has twists and t ...

随机推荐

  1. JavaUtil_09_通用工具类-01_Hutool

    一.重要的官方资料 1. Hutool 官网 2. Hutool 参考文档 3. Hutool API文档

  2. ROS 负载均衡

    [xuan89@MikroTik] > :for i from=1 to=$z do= {/ip firewall mangle add action=mark-connection chain ...

  3. C++中的前置和后置++

    在C++中进行操作符重载的时候,前置++返回的是一个引用. 这就设计到了对于基本变量进行前置操作时候的理解了. 例如,对于int类型变量,在进行前置++的时候,是会将i进行加1,然后返回i的引用.而i ...

  4. Android 开发:开源库Speex支持arm64的动态库文件

    随着处理器制造工艺的不断进步,和Android系统的不断发展,最近出了arm64-v8a的架构,由于项目中用到了speex的第三方语音编解码的动态库,其他架构的处理器暂不用说,一切正常,唯独到arm6 ...

  5. understanding of Pipe line & Timing Logic

    ///////////////////////////////////////////////////////////////////////////////// module vlg_add(inp ...

  6. DevExpress源码编译总结

    独家提供完整可编译sln文件,本篇文章内容包括基础知识(GAC.程序集强签名.友元程序集).编译过程.注册GAC.添加工具箱.多语言支持.运行时和设计时调试 源码地址  链接:http://pan.b ...

  7. Poj1258_Agri-Net(最小生成树)

    一.Description(poj1258) Farmer John has been elected mayor of his town! One of his campaign promises ...

  8. [转]升级Flash Builder 4.6中的Flash Player版本

    Adobe自发布Flash Builder 4.6后,就暂停了Flash Builder新版本的发布.但AIR和FlashPlayer版本仍然保持不断的更新.在下载新的AIRSDK并覆盖到Flash ...

  9. HDOJ1548(DFS超内存,BFS过了)

    DFS代码 #include<iostream> #include<cstdio> using namespace std; #define Min(a,b) (a<b) ...

  10. C++ ORM ODB入门

    1.ORM ORM, Object Relational Mapping, 对象关系映射,用来将基于对象的数据结构映射到SQL的数据结构中.即将基于对象的数据映射到关系表中的字段,然后我们可以通过对象 ...