zoukankan      html  css  js  c++  java
  • hdu 4465 求期望(C(m,n)太大用log优化)

    /*
    坑啊
    数学函数的运用log处理,exp还原
    tle好长时间,一直用g++交,最后把别人正确的代码交上也是tle,用c++交一遍ac
    题意:有两个数量为n的糖果,一个人开始吃,吃到最后有一堆剩余为0的时候不吃,把另一堆留给另外一个另一个人,求另一个人得到糖果的期望,
    这个人吃第一堆糖果的概率是p,第二堆糖果的概率是1-p,并且当他把一堆糖果吃完,再次吃的时候发现没有了才结束。
    解:分别求出当第一堆剩余的期望,第二堆剩余的期望加起来
    (n-i)*C(n+i,i)*pow(p,n+1)*pow(1-p,i)+(n-i)*C(n+i,i)*pow(1-p,n+1)*pow(p,i);
    */
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    double ee;
    double  cc(double e,int k,double p,int n,double q,int m) {
     double sum;
     sum=ee=e+log(1.0*k)-log(1.0*(k-n+1));
     sum+=1.0*n*log(p);
     sum+=1.0*m*log(q);
     return sum;
    }
    int main() {
       int n,i,k=0;
       double p,e,sum;
       while(scanf("%d%lf",&n,&p)!=EOF) {
        ee=0;e=0;
        sum=1.0*n*pow(p,n+1)+1.0*n*pow(1-p,n+1);
        for(i=1;i<=n;i++) {
            e=ee;
            sum+=1.0*(n-i)*(exp(cc(e,n+i,p,n+1,1-p,i))+exp(cc(e,n+i,1-p,n+1,p,i)));
        }
        printf("Case %d: %.6f
    ",++k,sum);
       }
    return 0;}
    

  • 相关阅读:
    springboot基本注解
    Mybatis之简单注解
    java再次学习
    在线html编辑器
    分享
    cyberduck的SSH登录
    ie67的冷知识
    css特效
    小程序分享
    css特效博客
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410558.html
Copyright © 2011-2022 走看看