您的位置:首页 > 其它

hdu 4465 Candy 数学期望 负二项分布与 数值计算技巧

2013-04-24 13:48 441 查看
首先是对于概率的计算,负二项分布:

  物品A取与不取概率为,p,1-p, 共取 k+r次,最后一次取A ,且取A总次数为 r 次概率为:

    View Code

#include<cstdio>
#include<cstdlib>
#include<cmath>
const int N = (int)5e5+10;
int n;
double p, f
;

double C(int n, int m){
return f
- f[m] - f[n-m];
}

int main(){
int Case = 1;
f[0] = 0;
for(int i = 1; i <= 400000; i++) f[i] = f[i-1]+log(1.*i);

while( scanf("%d %lf", &n,&p) != EOF){
double res = 0;
double p1 = log(p), p2 = log(1-p);
for(int i = 0; i <= n; i++){
//        res += 1.*i*c[n+n-i]*(p1[n+1]*p2[n-i]+p1[n-i]*p2[n+1]);
res += 1.*i*(
exp(C(n+n-i,n) + (n+1)*p1 + (n-i)*p2 )
+exp( C(n+n-i,n) + (n+1)*p2 + (n-i)*p1 )
);
}
printf("Case %d: %.6f\n", Case++, res );
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: