hdu 4465 Candy(log压缩大数)
来源:互联网 发布:数据接口类型 编辑:程序博客网 时间:2024/06/05 01:04
期望公式很好推,要注意空的盒子总共被取了N+1次,而不是N次。
但是在N很大的时候公式中的组合数会巨大,而且p的N次方也会非常小。这样就要像一个方法压缩他们,就是对这些数取log,然后再用exp函数还原(e的n次方)
对于组合数,先预处理出1到2e5这些数阶乘的log,再用这些阶乘去算组合数。
对于p的n次方,它的log等于n*log(p)
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#include <cmath>#define maxn 400005double F[maxn];double C[maxn];int N;double p;void init(){for(int i=2;i<=maxn;i++){F[i]=F[i-1]+log(i);}}double Pow(double p,int n){double res=1;while(n--) res*=p;return res;}int main(){init();int kase=1;while(~scanf("%d%lf",&N,&p)){for(int i=0;i<N;i++){C[i]=F[i+N]-F[i]-F[N];}double res=0;double k1=log(p),k2=log(1-p);for(int i=0;i<N;i++){double tmp; tmp=(N+1)*k1+i*k2+C[i];res+=(N-i)*exp(tmp);tmp=(N+1)*k2+i*k1+C[i];res+=(N-i)*exp(tmp);}printf("Case %d: %.6f\n",kase++,res);}return 0;}
0 0
- hdu 4465 Candy(log压缩大数)
- hdu 4465 Candy - 概率 log 组合数
- HDU 4465 Candy(组合+log优化)
- 【基础数学】 HDU 4465 Candy Log搞
- HDU 4465 (candy)(期望+log优化)
- hdu 4465 Candy( 概率 log 组合数 )
- HDU 4465 Candy
- HDU 4465 Candy
- HDU 4465 candy
- HDU 4465 Candy
- hdu 4465 Candy
- Hdu 4465 Candy
- hdu 4465 Candy
- HDU 4465 Candy(概率)
- HDU 4465 Candy ( 数学期望 )
- HDU 4465 Candy 纯数学
- HDU 4465 Candy (概率)
- Candy HDU
- 【Hibernate】关于hibernate中使用createSQLQuery后返回的结果处理
- BZOJ 1861 ZJOI 2006 Book 书架 Splay
- UVA 11475 Extend to Palindrome 后缀数组 LCP
- PHP中判断字符串是否含有中文
- gridView点击Item有黄色背景??
- hdu 4465 Candy(log压缩大数)
- 【DP】 HDOJ 2829 Lawrence
- Combinations
- HDU 5094 Maze(BFS、状态压缩)
- DBHelper连接oracle数据库类
- 1212万能盛典--全民预售报名开启
- 面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?
- 1212万能盛典--无线会场招商
- [水煮网商]成为有价值的网商