zoukankan      html  css  js  c++  java
  • poj 1322 chocolate

    题目大意:

    每次从一个有x种颜色巧克力的包里拿出一个巧克力,拿出每种不同颜色的巧克力的概率相同

    若包外面有两个颜色相同的巧克力,则吃掉这两个巧克力

    求n次操作后桌上有m个巧克力的概率

    思路:

    概率dp

    dp i j表示i次操作后有j个巧克力的概率

    则有两种转移,就是之前有j+1个然后取出来一个,有一个颜色相同

    还有一个是之前有j-1个然后取出来一个,颜色不同

    再加上奇数次操作无法得到偶数颗糖,偶数次无法得到奇数颗

    以及只需要计算到小数点后三位所以当n>=1000时,可以按照奇偶直接剪枝

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<memory.h>
     7 #include<vector>
     8 #include<queue>
     9 #include<cstdlib>
    10 using namespace std;
    11 int n,m;
    12 double c,f[2010][2010];
    13 int main()
    14 {
    15     while(cin>>c>>n>>m&&c!=0)
    16     {
    17         if(n>1000) n=1000+(n&1);
    18         f[0][0]=f[1][1]=1;
    19         for(int i=2;i<=n;i++)
    20         {
    21             for(int j=0;j<=i;j++)
    22             {
    23                 f[i][j]=f[i-1][j+1]*((double)j+1)/c+f[i-1][j-1]*(c-(double)(j-1))/c;
    24             }
    25         }
    26         printf("%.3lf
    ",f[n][m]);
    27     }
    28 }
    View Code
  • 相关阅读:
    css
    ubuntu 解压zip 文件乱码
    常用 Git 命令清单
    phpstorm git配置
    github ssh秘钥配置
    ubuntu 安装phpunit
    ubuntu 安装php xdebug
    nginx压缩,缓存
    mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
    putty登录显示IP
  • 原文地址:https://www.cnblogs.com/yyc-jack-0920/p/7221782.html
Copyright © 2011-2022 走看看