求期望,对数的应用,预处理(糖果,uva 1639)
2016-09-29 17:59
225 查看
思路有,但一看到n那么大,就不会做了。。。
利用对数来计算期望,以保证精度。学到了!
然后。。一定要先证明自己的数学公式一定是对的,再去编写代码,否则就是白费时间。
0的对数是负无穷,所以要特殊判断,不过不判断也不会错。
预处理时打表,以快速求出log(C(m,n))。
也就是带了对数而且允许误差才能这么算吧。
第一次见到卡long double的。。。
cb没法正确的输出long double。
vc可以,用%Lf。
#include<bits/stdc++.h>
using namespace std;
long double c[400010];
int n;
double p;
int kase;
const double eps=1e-11;
long double p1;
long double p2;
long double e=2.718281828459;
long double sum[400010];
long double C(int m,int n)
{
return sum[m]-sum
-sum[m-n];
}
void init()
{
sum[0]=sum[1]=log(1);
for(int i=2;i<=400000;i++) sum[i]=sum[i-1]+log(i);
}
int main()
{
init();
while(scanf("%d %lf",&n,&p)!=EOF)
{
long double ans=0;
p1=log(p);
p2=log(1-p);
for(int i=1;i<=n;i++)
ans+=i*(pow(e,C(2*n-i,n)+(n+1)*p1+(n-i)*p2)+pow(e,C(2*n-i,n)+(n-i)*p1+(n+1)*p2));
double ANS=ans;
printf("Case %d: %.6lf\n",++kase,ANS);
}
return 0;
}
利用对数来计算期望,以保证精度。学到了!
然后。。一定要先证明自己的数学公式一定是对的,再去编写代码,否则就是白费时间。
0的对数是负无穷,所以要特殊判断,不过不判断也不会错。
预处理时打表,以快速求出log(C(m,n))。
也就是带了对数而且允许误差才能这么算吧。
第一次见到卡long double的。。。
cb没法正确的输出long double。
vc可以,用%Lf。
#include<bits/stdc++.h>
using namespace std;
long double c[400010];
int n;
double p;
int kase;
const double eps=1e-11;
long double p1;
long double p2;
long double e=2.718281828459;
long double sum[400010];
long double C(int m,int n)
{
return sum[m]-sum
-sum[m-n];
}
void init()
{
sum[0]=sum[1]=log(1);
for(int i=2;i<=400000;i++) sum[i]=sum[i-1]+log(i);
}
int main()
{
init();
while(scanf("%d %lf",&n,&p)!=EOF)
{
long double ans=0;
p1=log(p);
p2=log(1-p);
for(int i=1;i<=n;i++)
ans+=i*(pow(e,C(2*n-i,n)+(n+1)*p1+(n-i)*p2)+pow(e,C(2*n-i,n)+(n-i)*p1+(n+1)*p2));
double ANS=ans;
printf("Case %d: %.6lf\n",++kase,ANS);
}
return 0;
}
相关文章推荐
- 【Uva1639】概率 + 期望 + 对数处理精度
- uva1639 Candy 数学期望 对数处理精度
- uva 1639 Candy 大数的对数处理 数学期望
- UVa1639糖果(紫书333)(期望)
- uva1639(数学期望,利用对数减少浮点类型数据的精度损失方法)
- [UVA1639] Candy && 数学期望
- uva 1639--精度处理方法之取对数(uva 1639)
- (排序算法的应用7.3.8)UVA 299 Train Swapping(使用冒泡排序来计算逆序对数)
- uva 1639 Candy (对数处理精度)
- uva 1639 Candy | ACM\ICPC Chengdu 2012 (期望)
- 例题10-17 糖果 UVa1639
- 【数学期望】Candy, ACM/ICPC Chengdu 2012, UVa1639 【精度】
- UVA 1639——Candy(期望,精度处理)
- UVA.1639 Candy (期望 高精度)
- UVa 1639 (期望) Candy
- UVALive 7962|Gym 101201K|Tournament Wins|概率期望|组合数求对数
- 鸽巢原理应用-分糖果 POJ 3370 Halloween treats
- C语言预处理中#和##的应用
- UVA 11995 - I Can Guess the Data Structure! (数据结构) STL的应用
- uva 10054 The Necklace 拼项链 欧拉回路基础应用