[概率+对数优化] hdu 4465 Candy
2014-10-30 12:07
375 查看
题意:
给两个盒子里面都有n个糖果,每次从第一个盒子里拿糖果的概率是p,另一个是1-p
问当拿完一个盒子时,另一个盒子还有多少糖果的期望。
其中有一点就是,当她打开盒子发现是空的时候 会去打开另一个盒子在同一天。
思路:
期望公式很好推:
但是推完就会出现各种溢出问题
所以要用对数优化
代码:
给两个盒子里面都有n个糖果,每次从第一个盒子里拿糖果的概率是p,另一个是1-p
问当拿完一个盒子时,另一个盒子还有多少糖果的期望。
其中有一点就是,当她打开盒子发现是空的时候 会去打开另一个盒子在同一天。
思路:
期望公式很好推:
但是推完就会出现各种溢出问题
所以要用对数优化
代码:
#include"cstdlib" #include"cstdio" #include"cstring" #include"cmath" #include"queue" #include"algorithm" #include"map" #define eps 1e-6 #define ll __int64 #include"iostream" using namespace std; double Log[423000],logp,logq; double fc(int m,int k,double p,double q,int sum) { double ans=0; ans=Log[m]-Log[k]-Log[m-k]; ans+=p*(k+1); ans+=q*sum; return exp(ans); } int main() { Log[0]=0; for(int i=1;i<=400000;i++) Log[i]=Log[i-1]+log(i*1.0); int n,cas=1; double p; while(scanf("%d%lf",&n,&p)!=-1) { double ans=0; logp=log(p); logq=log(1-p); for(int i=n; i<=2*n; i++) { ans+=fc(i,n,logp,logq,i-n)*(2*n-i)+fc(i,n,logq,logp,i-n)*(2*n-i); } printf("Case %d: %lf\n",cas++,ans); } return 0; }
相关文章推荐
- HDU 4465 Candy 概率期望值的对数优化
- Hdu 4465 Candy (概率 对数 组合数 负二项分布)
- HDU 4465 - Candy(概率与数学优化)
- HDU 4465 - Candy(概率与数学优化)
- hdu 4465 Candy - 概率 log 组合数
- HDU 4465 Candy (概率)
- hdu 4465 Candy(二次项概率)
- hdu 4465 Candy(概率公式+极大乘极小,4级)
- hdu 4465 Candy - 概率 log 组合数
- HDU 4465 Candy(概率)
- hdu 4465 Candy(概率公式+极大乘极小,4级)
- hdu 4465 Candy (概率期望)
- Hdu 4465 Candy (快速排列组合+概率)
- HDU 4465 Candy 概率 (2012成都区域赛B题)
- hdu 4465 Candy
- hdu 4465 Candy
- HDU 4465 Candy--数学求期望
- hdu 4465 概率题
- hdu 4465 Candy
- hdu 4465 Candy(log压缩大数)